电子表格表格疑难解答提交事件Google

时间:2012-09-26 02:25:29

标签: google-apps-script

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

3 个答案:

答案 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);
  }
}