0

我们有很多带有相关答案文件的谷歌表格。所有带有答案的电子表格文件都包含一个由触发器“发送表单”运行的 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 ,则答案写入电子表格正确但可能不会触发“发送表单”,甚至可能不会执行一行

感谢帮助

PS如何调试这种需要 事件对象参数的脚本?

4

1 回答 1

1

感谢Rubén,我使用了这种方法如何在 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 我发现我的所有代码都运行良好并且意外地我重新创建了答案文件并删除了表单和答案文件之间的连接创建新的答案文件并放入我的代码中。它有效!

摘要:如果您认为您的答案文件没有传递触发事件对象,甚至没有运行 .gs “发送表单” - 只需从表单中清除答案并将其附加到全新的答案文件

于 2016-12-29T04:02:20.183 回答