Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 使用多个onEdit函数_Google Apps Script_Google Sheets - Fatal编程技术网

Google apps script 使用多个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'

我不知道该怎么做。我基本上是在做一张打卡和打卡时间表。因此,当他们选中该复选框时,它将运行一个脚本,通过将时间复制到另一列并删除该复选框来为他们计时。还有另一个onEdit脚本,它对打卡执行相同的操作。但是,这两个脚本只执行打卡操作。这是我的密码

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()方法。

这是否回答了您的问题?这能回答你的问题吗?谢谢你,效果很好!因此,我想问的另一个问题是,我的一些员工必须在中午打卡下班,然后再打卡上班(因为下雨,而且自从我们做景观美化工作以来就没什么了)。我该如何抵消我的打卡时间和打卡时间,以便它们在某种意义上“叠加”到那天?然后我将运行一个通宵脚本来清除时钟输入和时钟输出时间。我会附上一个截图。