使用 MailApp.sendEmail 发送电子邮件两次
Sending emails twice with MailApp.sendEmail
我已经创建了一个 google 应用程序脚本来在提交 Google 表单后自动发送电子邮件。脚本很简单:
function AutoConfirmation(e){
var theName = e.values[1];
var theEmail = e.values[2];
var theSubject= e.values[3];
var myEmail = "myemail@gmail.com";
var theMessage = e.values[4];
var subject = "Contact form response – " + theSubject;
var message = theMessage;
MailApp.sendEmail (myEmail, subject,message);
}
但是,出于某种我无法弄清楚的原因,每次提交表单时我都会收到两封即时电子邮件:
- 数据提交了吗(一切如期)
- 为空(例如主题为"Contact form response –")
我什至在我拥有的另一个 Google 帐户中从头开始,但同样的问题发生了。
感谢任何建议!
问题似乎是由同步表单对传播的响应的内部进程引起的sheet。在某些情况下,它会对先前提交的表单响应的 "Timestamp" 列进行轻微更新,这会导致 onFormSubmit 触发器再次为这些行触发(尽管事件对象不完整)。
工程团队仍在努力修复,但与此同时,您可以通过过滤掉仅影响时间戳列的表单提交事件来解决此问题。由于您可以对表单响应 sheet 中的列重新排序,因此最好的方法是检查事件的范围是否仅涵盖单个列:
函数 onFormSubmit() {
如果 (e.range.columnStart == e.range.columnEnd) return;
// 剩下的代码
// ...
}
我已经创建了一个 google 应用程序脚本来在提交 Google 表单后自动发送电子邮件。脚本很简单:
function AutoConfirmation(e){
var theName = e.values[1];
var theEmail = e.values[2];
var theSubject= e.values[3];
var myEmail = "myemail@gmail.com";
var theMessage = e.values[4];
var subject = "Contact form response – " + theSubject;
var message = theMessage;
MailApp.sendEmail (myEmail, subject,message);
}
但是,出于某种我无法弄清楚的原因,每次提交表单时我都会收到两封即时电子邮件:
- 数据提交了吗(一切如期)
- 为空(例如主题为"Contact form response –")
我什至在我拥有的另一个 Google 帐户中从头开始,但同样的问题发生了。
感谢任何建议!
问题似乎是由同步表单对传播的响应的内部进程引起的sheet。在某些情况下,它会对先前提交的表单响应的 "Timestamp" 列进行轻微更新,这会导致 onFormSubmit 触发器再次为这些行触发(尽管事件对象不完整)。
工程团队仍在努力修复,但与此同时,您可以通过过滤掉仅影响时间戳列的表单提交事件来解决此问题。由于您可以对表单响应 sheet 中的列重新排序,因此最好的方法是检查事件的范围是否仅涵盖单个列:
函数 onFormSubmit() { 如果 (e.range.columnStart == e.range.columnEnd) return;
// 剩下的代码 // ... }