我正在使用 Google Apps 脚本,但在使用电子表格表单提交时,我不知道如何对
onEdit(e)
方法进行故障排除。
代码非常简单。只需检查表单数据中的参数,然后将其删除或向某人发送电子邮件。
function onEdit(e) {
var namedRange = e.namedValues;
if (namedRange.SOME_VALUE < 3.3) {
SpreadsheetApp.getActiveSheet().deleteRow(sheet.getLastRow());
} else {
MailApp.sendEmail("[email protected]", "New Entry", e.values);
}
};
您需要使用可安装“表单提交”触发器来触发脚本,并将该函数命名为与 onEdit 不同的名称(因此简单的“编辑时”触发器也不会被触发)。
可安装触发器触发的函数允许使用 Logger.log() 写入日志(例如,您可以调用
Logger.log(namedRange.SOME_VALUE)
并稍后观察日志)。顺便说一句,即使有一个简单的触发器可用于“表单提交”,我也不相信 Logger.log 实际上适用于此类功能。
这是一个可以测试表单提交触发功能的函数,摘自如何在 GAS 中测试触发函数?。
function test_onFormSubmit() {
var dataRange = SpreadsheetApp.getActiveSheet().getDataRange()
var data = dataRange.getValues();
var headers = data[0];
// Start at row 1, skipping headers in row 0
for (var row=1; row < data.length; row++) {
var e = {};
e.values = data[row];
e.range = dataRange.offset(row,0,1,data[0].length);
e.namedValues = {};
// Loop through headers to create namedValues object
for (var col=0; col<headers.length; col++) {
e.namedValues[headers[col]] = e.values[col];
}
// Pass the simulated event to onFormSubmit
onFormSubmit(e);
}
}
当有人手动编辑电子表格时,会触发 onEdit 函数。对于提交触发器,请使用 onSubmit() 函数