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