Google脚本:sendEmail到密件抄送列表时出错

时间:2013-03-14 14:57:27

标签: javascript email google-apps-script

我正在尝试编写一个脚本,将电子邮件发送到谷歌电子表格中的分发列表。在将其移至实时环境之前,我正在使用列表中只有3个电子邮件地址的测试表。我希望它发送给我,并列出名单上的所有人。如果我将电子邮件地址列表放在sendEmail的收件人位置,该脚本可以正常工作,但是当我尝试使用sendEmail的bcc高级参数将电子邮件地址移动到bcc点时,脚本工作正常。在这种情况下,我收到以下错误:

遇到错误:电子邮件无效:[L; @ 130cab11

在此错误中,每次运行脚本时“130cab11”部分都会更改。该脚本唯一一致的部分是“遇到错误:电子邮件无效:[L; ...”

我的脚本的相关部分如下:

// Retrieve data for the Email that will be sent///
   var email_column = ss.getSheetByName(sendtosheet)
   var lastrow = email_column.getLastRow()
   var get_email_data = email_column.getRange(2,2,lastrow-1,1).getValues()
   var emailTemplate = ss.getSheetByName("Email Templates").getRange("B1").getValue()
   var aliases = GmailApp.getAliases();
      Logger.log(aliases)

//Format the email
   var advancedArgs = {bcc:get_email_data,from: aliases[0]}
   var Self = "MyEmail@mycompany.com"
   var subject = "INVITE: Upcoming Focus Group Session";
   var message = emailTemplate

//Send the email
   GmailApp.sendEmail(Self, subject, message, advancedArgs)

如果我在不使用bcc参数的情况下发送电子邮件并且sendEmail代码的结构如下所示,则此代码可以正常运行:

//Send the email
   GmailApp.sendEmail(get_email_data, subject, message, {from: aliases[0]})

我已经搜索了stackoverflow和google脚本手册以及我能想到的其他任何地方,所以任何帮助都会受到赞赏。

1 个答案:

答案 0 :(得分:1)

您需要将密件抄送列表作为字符串提供。

var get_email_data = email_column.getRange(2,2,lastrow-1,1).getValues()

在上述声明之后,get_email_data包含一个二维对象数组,即指定范围的内容。这就是错误消息抱怨[L;...的原因 - 当它想要一个字符串时它有一个数组,但是盲目地将它作为字符串处理并发现它很困难。

在此之前:

 var advancedArgs = {bcc:get_email_data,from: aliases[0]}

...您需要将数组的内容加入到包含以逗号分隔的子字符串列表的字符串中。幸运的是,即使对于这个二维数组,Array方法.toString()也会这样做。

var get_email_data = email_column.getRange(2,2,lastrow-1,1).getValues()
                                 .toString();