Google apps script 使用sendEmail()接收重复的电子邮件
我尝试了Google apps script 使用sendEmail()接收重复的电子邮件,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我尝试了MailApp.sendmail()和GmailApp.sendmail()从onFormSubmit发送电子邮件确认,结果收到了多封重复的电子邮件(多达6封)。代码如下所示: function sendEmailConf_(ss, email, session) { Logger.log("sendEmailConf_ email: %s for session: %s", email, session); var formUrl = ss.getFormUrl();
MailApp.sendmail()
和GmailApp.sendmail()
从onFormSubmit
发送电子邮件确认,结果收到了多封重复的电子邮件(多达6封)。代码如下所示:
function sendEmailConf_(ss, email, session) {
Logger.log("sendEmailConf_ email: %s for session: %s", email, session);
var formUrl = ss.getFormUrl(); // Use form attached to sheet
var form = FormApp.openByUrl(formUrl);
var formResponses = form.getResponses();
Logger.log("Count of form responses: %s", formResponses.length);
for (var i = 0; i < formResponses.length; i++) {
if (formResponses[i].getRespondentEmail() == email) {
Logger.log("Sending email to: %s for session: %s", email, session[0]);
GmailApp.sendEmail(
email,
'Confirmation for registration of: ' + session[0] + ', ' + getSessionSchedStr(session),
('Thanks for registering!\n\n' + getResponseAsText(formResponses[i]) + '\n\n' +
'You may change your response using this URL: ' + formResponses[i].getEditResponseUrl())
);
}
}
}
函数sendmailconf(ss、电子邮件、会话){
Logger.log(“sendmailconf_uu电子邮件:%s用于会话:%s”,电子邮件,会话);
var formUrl=ss.getFormUrl();//使用附在工作表上的表单
var form=FormApp.openByUrl(formUrl);
var formResponses=form.getResponses();
Logger.log(“表单响应的计数:%s”,formResponses.length);
对于(var i=0;i
使用脚本转录本和日志语句,我确认sendmail()
仅被调用一次,并且该电子邮件是一个包含单个电子邮件地址的字符串。我收到的电子邮件具有完全相同的正文,并且在同一时间收到,它们都具有相同的发件人和收件人地址(都是我的,因为我正在测试它)。有人知道这里出了什么问题吗
编辑:刚刚观察到重复计数在每次运行时都增加一次。我又试了一次,收到了7封新的电子邮件,都是完全相同的(和之前的6封不同)。我不知道是什么导致了这种行为。打开脚本编辑器,选择“资源”->“当前项目触发器”。确保只有一个触发器与脚本关联
如果您与多个用户共享了脚本,您必须从每个授权脚本的用户的帐户中重复此操作。太好了,非常感谢!有这样一段代码作为
onOpen
的一部分运行,并且一次又一次地添加触发器:ScriptApp.newTrigger('onFormSubmit')。forSpreadsheet(ss).onFormSubmit().create()
。