【问题标题】:Google Script: MailApp.sendEmail to multiple addresses?谷歌脚本:MailApp.sendEmail 到多个地址?
【发布时间】:2026-02-14 13:25:01
【问题描述】:

我有一个使用以下脚本的脚本:

MailApp.sendEmail(row.shiftManager, "Holiday Approval Request", "", {htmlBody: message});
  row.state = STATE_PENDING;

不过,我也想将相同的邮件发送到 row.shiftSupervisor,这可能是我忽略的非常简单的事情,但我想这里有人会马上知道它是什么。

为你的帮助干杯:)

编辑 - 我尝试使用:

MailApp.sendEmail(row.shiftManager, row.shiftSupervisor, "Holiday Approval Request", "", {htmlBody: message});
      row.state = STATE_PENDING;

但没有快乐。

编辑 2 - 我得到了它:

  MailApp.sendEmail(row.shiftManager, "Holiday Approval Request", "", {htmlBody: message});
  MailApp.sendEmail(row.shiftSupervisor, "Holiday Approval Request", "", {htmlBody: message});
  row.state = STATE_PENDING;

不是看起来最优雅的代码,但它可以完成工作......

【问题讨论】:

  • 多变量是什么意思?
  • 完全是一个错误,我在处理多项任务(很糟糕)并在标题中添加了其他内容。
  • 您必须遍历多个电子邮件地址才能向他们发送一封电子邮件。
  • 是的,我可以使用它:MailApp.sendEmail(row.shiftManager, "Holiday Approval Request", "", {htmlBody: message}); MailApp.sendEmail(row.shiftSupervisor, "Holiday Approval Request", "", {htmlBody: message}); row.state = STATE_PENDING; 就代码而言,它看起来有点笨拙,但它可以完成工作。

标签: email google-apps-script


【解决方案1】:

可以使用加号在每个电子邮件地址之间使用逗号将电子邮件地址连接(连接在一起)。在 JavaScript 中,加号可用于添加或连接字符串。加号在 JavaScript 中既是加法运算符又是字符串运算符。字符串是文本,如果你使用加号来连接文本字符串,那么它就是一个字符串公式。

一种解决方案是:

var recipient = row.shiftManager + "," + row.shiftSupervisor;
MailApp.sendEmail(recipient, "Holiday Approval Request", "", {htmlBody: message});

在上面的例子中,有 4 个参数。但是MailApp.sendEmail() 有多种可能的参数结构。以下示例显示了放入对象中的所有设置,其中对象中的“to”键是针对收件人的。

MailApp.sendEmail({
  to: recipient,
  cc: recipientsCC,
  subject: Subject,
  htmlBody: html
});

一个完整的例子:

function sendToMultiple() {
  var message = "This is a test of HTML <br><br> Line two";
  
  var recipientsTO = "example@gmail.com" + "," + "example@yahoo.com";
  var recipientsCC = "example@gmail.com";
  var Subject = "Vacation Approval Request";
  var html = message;
  
  MailApp.sendEmail({
    to: recipientsTO,
    cc: recipientsCC,
    subject: Subject,
    htmlBody: html
  });

}

带有示例的文档位于以下链接:

Google Documentation - MailApp.sendEmail

【讨论】:

  • 嘿,谢谢!它看起来比我粗略地放在一起的解决方案要好得多。但是,我不断收到一条消息“缺少:在属性 ID 之后。(第 96 行,文件“批准”)”
  • 您好,再次感谢您的帮助。我让它工作,但它似乎干扰了脚本的另一部分。但是,由于您的布局方式,我发现我可以做到MailApp.sendEmail(row.shiftManager + "," + row.shiftSupervisor, "Holiday Approval Request", "", {htmlBody: message});。比再次重复该功能更优雅一点!这就是为什么在夜班工作时编写脚本/编码是不好的。哈哈,你错过了一些愚蠢的小事!再次加油~
  • 很高兴你让它工作。我也会用你的解决方案更新答案。请考虑将其标记为正确答案。
  • 完成,感谢您所做的一切。冒着听起来有点厚颜无耻的风险,我还向您发送了关于我在一段代码中遇到的另一个问题的邮件。您可以提供的任何帮助将不胜感激! :)
【解决方案2】:

这是我的做法:

//check quota and log
const emailsLeft = MailApp.getRemainingDailyQuota();
console.log( emailsLeft + " emails left in quota");

//get list of emails from spreadsheet itself
//filter out empty rows
const emails = getTab("Config").getRange("D2:D").getValues().map(function(el){ return el[0]; }).filter(function(el){ return el != '' });  

//send emails from NO_REPLY email, subject and HTML body
MailApp.sendEmail({
  to: emails.join(","),
  subject: subject,
  htmlBody: html,
  noReply: true
});

function getTab(name) {
  var sheet = SpreadsheetApp.getActiveSpreadsheet();
  return sheet.getSheetByName(name);
}

getTab() 和其他辅助函数可以在这里找到 https://github.com/tim-kozak/google-spreadsheet-helpers

【讨论】: