使用sendEmail()接收重复的电子邮件

时间:2015-02-05 06:30:50

标签: google-apps-script google-sheets

我尝试了MailApp.sendEmail()GmailApp.sendEmail()来发送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())
      );
    }
  }
}

使用脚本记录和日志语句,我确认sendEmail()只被调用一次,并且该电子邮件是一个包含单个电子邮件地址的字符串。我收到的电子邮件具有完全相同的正文并且同时收到它们都有相同的地址和地址(我的,因为我正在测试它)。有人知道这里出了什么问题吗?

编辑:刚刚观察到重复计数每次运行时都会增加1。我刚试了一次,收到了7封新鲜的电子邮件,都是完全重复的(与之前的6封不同)。我对可能造成这种行为的原因一无所知。

1 个答案:

答案 0 :(得分:3)

打开脚本编辑器并选择Resources - &gt;当前项目触发器。确保只有一个与脚本关联的触发器。

如果您与多个用户共享了该脚本,则必须从可能已授权该脚本的每个用户的帐户中重复此操作。