0

我正在使用 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);
  }
};
4

3 回答 3

1

您需要使用可安装的“on form submit”触发器来触发脚本,并将函数命名为与 onEdit 不同的名称(因此也不会触发简单的“on edit”触发器)。

可安装触发器触发的函数允许使用 Logger.log() 写入日志(例如,您可以Logger.log(namedRange.SOME_VALUE)稍后调用并观察日志)。顺便说一句,即使有一个简单的触发器可用于“提交表单”,我也不相信 Logger.log 实际上适用于此类功能。

于 2012-09-26T06:57:13.733 回答
0

当有人手动编辑电子表格时会触发 onEdit 函数。对于提交触发器,使用 onSubmit() 函数

于 2012-09-26T03:21:33.680 回答
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);
  }
}
于 2013-08-26T16:45:27.540 回答