Google apps script 使用多个onEdit函数
我不知道该怎么做。我基本上是在做一张打卡和打卡时间表。因此,当他们选中该复选框时,它将运行一个脚本,通过将时间复制到另一列并删除该复选框来为他们计时。还有另一个onEdit脚本,它对打卡执行相同的操作。但是,这两个脚本只执行打卡操作。这是我的密码Google apps script 使用多个onEdit函数,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我不知道该怎么做。我基本上是在做一张打卡和打卡时间表。因此,当他们选中该复选框时,它将运行一个脚本,通过将时间复制到另一列并删除该复选框来为他们计时。还有另一个onEdit脚本,它对打卡执行相同的操作。但是,这两个脚本只执行打卡操作。这是我的密码 function onEdit(e) { // --------- CLOCKING IN ---------- // Get Range var sheetName = 'Sheet1' var cellName = 'D2'
function onEdit(e) {
// --------- CLOCKING IN ----------
// Get Range
var sheetName = 'Sheet1'
var cellName = 'D2'
// Set Value False
SpreadsheetApp.getActiveSheet().getRange('D2').setValue('FALSE');
// Move Time
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getRange('G2').activate();
spreadsheet.getRange('B2').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
}
function onEdit(e) {
// --------- CLOCKING OUT ----------
// Get Range
var sheetName = 'Sheet1'
var cellName = 'E2'
// Set Value False
SpreadsheetApp.getActiveSheet().getRange('E2').setValue('FALSE');
// Move Time
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getRange('H2').activate();
spreadsheet.getRange('B2').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
}
还有一张我的Gsheet的照片:
试试这个:
function onEdit(e) {
const sh=e.range.getSheet();
if(sh.getName()=='Sheet1' && e.range.columnStart==4 && e.range.rowStart==2 && e.value=="TRUE") {
e.range.setValue('FALSE');
sh.getRange('G2').setValue(sh.getRange('B2').getDisplayValue());
}
if(sh.getName()=='Sheet1' && e.range.columnStart==5 && e.range.rowStart==2 && e.value=="TRUE") {
e.range.setValue('FALSE');
sh.getRange('H2').setValue(sh.getRange('B2').getDisplayValue());
}
}
请注意,如果提供事件对象,则无法运行此排序函数。因此,不,您不能从脚本编辑器运行它,您只会得到一个错误,有些东西找不到null的getSheet()方法。这是否回答了您的问题?这能回答你的问题吗?谢谢你,效果很好!因此,我想问的另一个问题是,我的一些员工必须在中午打卡下班,然后再打卡上班(因为下雨,而且自从我们做景观美化工作以来就没什么了)。我该如何抵消我的打卡时间和打卡时间,以便它们在某种意义上“叠加”到那天?然后我将运行一个通宵脚本来清除时钟输入和时钟输出时间。我会附上一个截图。