我正在使用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("none@none.na", "New Entry", e.values);
}
};
答案 0 :(得分:1)
您需要使用installable“on form submit”触发器来触发脚本,并将该函数命名为onEdit(因此简单的“on edit”触发器也不会被触发)。 / p>
可安装触发器触发的函数允许使用Logger.log()写入日志(例如,您可以调用Logger.log(namedRange.SOME_VALUE)
并稍后查看日志)。顺便说一下,即使有一个简单的触发器可用于“on form submit”,我也不相信Logger.log实际上适用于这些函数。
答案 1 :(得分:0)
当有人手动编辑电子表格时会触发onEdit功能。对于for提交触发器,请使用onSubmit()函数
答案 2 :(得分:0)
这是一个可以测试表单提交触发器功能的函数,取自How can I test a trigger function in 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);
}
}