事件对象不会传递给脚本

时间:2016-12-20 09:07:33

标签: google-apps-script google-sheets

我们有很多带有相关答案文件的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,则答案会写入电子表格正确但触发"发送表单"可能不会发生,甚至一行不执行

感谢您的帮助

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

1 个答案:

答案 0 :(得分:0)

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

这是我的结果:

fun: 0.0018415003336983448
     jac: array([-0.00523077,  0.00762011])
 message: 'Optimization terminated successfully.'
    nfev: 12
     nit: 2
    njev: 3
  status: 0
 success: True
       x: array([ 2.06899361, -1.1785839 ])

lastRow 变量包含lastRow的值,使用Debug我发现我的所有代码都完美无缺 并且我意外地重新创建了答案文件并删除了表单和答案文件之间的连接 创建新的答案文件并放入我的代码中。它的工作原理!

总结:如果您认为您的答案文件未通过触发器事件对象,或者甚至没有运行.gs“On send form” - 只需从表单中清除答案并将其附加到绝对新的答案文件