Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 使用sendEmail()接收重复的电子邮件_Google Apps Script_Google Sheets - Fatal编程技术网

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()