事件对象不传递给脚本

Event object doesn't pass to script

我们有很多 google 表格和相关的答案文件。所有包含答案的电子表格文件都包含一个 GScript,它 运行 通过触发“发送表单

但是只有一种形式停止了 运行 这个脚本。答案写入电子表格 正确,但相关脚本似乎没有执行。

此脚本接收对象触发事件并发送包含最后一行的电子邮件 电子表格

function sendFormByEmail(e) {
     var s = SpreadsheetApp.getActiveSheet();
     var headers = s.getRange(1,1,1,s.getLastColumn()).getValues()[0];
     ....
     ....
     GmailApp.sendEmail(email, subject,messageTxt,{'htmlBody':messageHTML,'name': 'HR-bot'});
}

太奇怪了,我们在其他电子表格中完全相同的脚本,而且运行完美!

此外,如果评论所有此脚本并仅留下带有 GmailApp.sendEmail 的行并发送 GoogleForm ,答案将正确写入电子表格但触发 "On send form" 可能不会发生甚至那一行也不执行

感谢帮助

P.S。如何调试这种需要 Event Object Argument 的脚本?

感谢 Rubén ,我使用了这种方法 How can I test a trigger function in GAS?

这就是我的结果:

  var dataRange = SpreadsheetApp.getActiveSheet().getDataRange();
  var data = dataRange.getValues();
  var lastRow = data[data.length-1];
  var headers = data[0];

   for (var row=1; row < data.length; row++) {
    var e = {};
    e.values = data[row].filter(Boolean);  
    e.range = dataRange.offset(row,0,1,data[0].length);
    e.namedValues = {};
    // Loop through headers to create namedValues object
    // NOTE: all namedValues are arrays.
    for (var col=0; col<headers.length; col++) {
      e.namedValues[headers[col]] = [data[row][col]];
    }
   }

lastRow 变量包含 lastRow 的值,使用 Debug 我发现我的所有代码都完美无缺 不小心我重新创建了答案文件并删除了表单和答案文件之间的连接 创建新的应答文件并放入我的代码中。它有效!

总结:如果您认为您的答案文件没有传递触发事件对象,甚至没有 运行 a .gs "On send form" - 只需清除表单中的答案并将其附加到绝对新应答文件