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

问题描述 投票:0回答:3

我正在使用 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);
  }
};
google-sheets google-apps-script triggers google-forms
3个回答
1
投票

您需要使用可安装“表单提交”触发器来触发脚本,并将该函数命名为与 onEdit 不同的名称(因此简单的“编辑时”触发器也不会被触发)。

可安装触发器触发的函数允许使用 Logger.log() 写入日志(例如,您可以调用

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


0
投票

这是一个可以测试表单提交触发功能的函数,摘自如何在 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);
  }
}

-1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.