使用MailApp.sendEmail发送电子邮件两次

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

我创建了一个Google Apps脚本,以在提交Google表单后自动处理电子邮件。该脚本非常简单:

function AutoConfirmation(e){
  var theName = e.values[1];
  var theEmail = e.values[2];
  var theSubject= e.values[3];
  var myEmail = "[email protected]";
  var theMessage = e.values[4];
  var subject = "Contact form response – " +  theSubject;
  var message = theMessage;
  MailApp.sendEmail (myEmail, subject,message);
}

但是,由于某种原因,我无法弄清楚,每次提交表单时,我都会收到两封即时电子邮件:

  1. 是否已提交数据(所有工作均按预期进行)
  2. 为空(例如,主题为“联系表格回复–”)

我什至从零开始使用我拥有的其他Google帐户,并且发生了同样的问题。

感谢任何建议!

google-apps-script google-sheets google-form
1个回答
0
投票

[问题似乎是由将表单响应同步到电子表格的内部过程引起的。在某些情况下,它会对先前提交的表单响应的“时间戳”列进行些微更新,这将导致针对这些行再次触发onFormSubmit触发器(尽管事件对象不完整)。

工程团队仍在研究修补程序,但是与此同时,您可以通过过滤掉仅影响时间戳列的表单提交事件来解决此问题。由于您可以对“表单响应”表中的列进行重新排序,因此最好的方法是检查事件范围是否仅覆盖单个列:

function onFormSubmit(){如果(e.range.columnStart == e.range.columnEnd)返回;

//您的其余代码// ...}

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