Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/445.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
Javascript 谷歌工作表脚本-onChange_Javascript_Google Apps Script_Google Sheets_Triggers_Onchange - Fatal编程技术网

Javascript 谷歌工作表脚本-onChange

Javascript 谷歌工作表脚本-onChange,javascript,google-apps-script,google-sheets,triggers,onchange,Javascript,Google Apps Script,Google Sheets,Triggers,Onchange,请帮助谷歌onChange功能表脚本。 我只想记录一次“考勤”表的更改,然后将此表上的更改记录到“Sheet5” 当“考勤”栏C发生变化时,将B栏的值复制到“Sheet5”中,并添加当前日期和时间。下面是一些我尝试过的代码,但不知道如何更改它 function createSpreadsheetOpenTrigger() { ScriptApp.newTrigger('onChange') .forSpreadsheet('ID to go here') .onChange

请帮助谷歌onChange功能表脚本。 我只想记录一次“考勤”表的更改,然后将此表上的更改记录到“Sheet5” 当“考勤”栏C发生变化时,将B栏的值复制到“Sheet5”中,并添加当前日期和时间。下面是一些我尝试过的代码,但不知道如何更改它

function createSpreadsheetOpenTrigger() {

   ScriptApp.newTrigger('onChange')
    .forSpreadsheet('ID to go here')
   .onChange()
   .create();

    }

function onChange(e) {

  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet5");
  const lastRow = sheet.getLastRow();

  sheet.getRange(lastRow + 1,1,1,4).setValues([
    [e.changeType,
      e.source.getSheetName(),
      e.source.getActiveSheet().getActiveRange().getValue(),
     new Date()]
    ]);
   }
试试这个:

function onEdit(e) {
  const sh=e.range.getSheet();
  if(sh.getName()=='Attendance' && e.range.columnStart==3 && e.range.rowStart>'Your header row') {
    e.source.getSheetByName("Sheet5").appendRow([e.range.offset(0,-1).getValue(),new Date()]);
  }
}

欢迎光临。首先,您必须理解问题中包含的代码。如果您还没有,请阅读,然后回来,按照中的建议添加您的搜索/研究工作的简要说明。嗨,库珀,谢谢您的回复。onEdit工作得很好,但我在最初的问题中忽略了说明,对此表示歉意,我需要使用onChange函数,因为第三方访问表单只能使用onChange函数。我尝试将脚本从onEdit更改为onChange,但运气不佳。尝试使用可安装的触发器。Thx Cooper,是的,我安装并测试了一个触发器“ScriptApp.newTrigger('onChange'),它触发onChange功能,但是你建议的onEdit脚本似乎不适用于onChange。不,当然不适用,但我建议你尝试一个可安装的onEdit触发器。on change事件对象和on edit事件对象或完全不同。您应该阅读文档中的events对象,您会发现它们完全不同。经过大量阅读,可安装触发器现在可以工作了,更改的行被复制到“Sheet5”。我仍然有一个问题,我正在挣扎,似乎复制循环两次或有时3次。当我在“考勤”中更改记录时,它会将多个副本复制到“Sheet5”中。这是当前代码