0

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

遇到错误:无效电子邮件:[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 脚本手册以及我能想到的其他任何地方,因此将不胜感激。

4

1 回答 1

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();
于 2013-05-31T13:59:55.343 回答