将一封电子邮件发送到Google电子表格中的多个地址

时间:2020-02-20 20:29:47

标签: javascript google-sheets

我正在尝试创建代码,该代码采用包含地址的行并将电子邮件发送到同一电子邮件中的所有地址。但是我的代码仅将电子邮件发送到列表中的第一个地址,而没有添加其他电子邮件。

function sendMail(){
 

 
  var sheetMail = SpreadsheetApp.getActiveSpreadsheet();
  var ecrvc = sheetMail.getSheetByName('List');
  
  var lastecrvc = ecrvc.getLastRow(); 
   
  //var email = [];
  var people = ",";
  var subject = "Hello All";
  var message = "This is a test";
  var email =  ecrvc.getRange("B2:B"+lastecrvc).getValues();
   

  
  for(var i = 9; i<lastecrvc; i++){
     var emailTo = ecrvc.getRange(i,2).getValues(); 
     email = emailTo + "@gmail.com"; 
     MailApp.sendEmail(email, subject, message)
      
    }
}

1 个答案:

答案 0 :(得分:1)

如果您希望MailApp将一封电子邮件发送给多个收件人,则可以使用逗号分隔的电子邮件字符串作为MailApp.sendEmail的第一个参数。例如:

const emails = [ "john.doe@email.com", "jane.doe@email.com" ]

// Join the emails into a single string separated by commas
const combinedEmails = emails.join() // "john.doe@email.com,jane.doe@email.com"

MailApp.sendEmail(combinedEmails, subject, message)

这应该起作用。但是,请确保您从表中正确读取了电子邮件地址。如果不确定,可以共享与您所使用的样张安排相同的样张。

假设您正在正确地从电子表格中读取电子邮件地址,则可以略微修改最后一个for循环以生成组合的电子邮件字符串,然后将电子邮件发送到循环外部

var emailsList = [];
for(var i = 9; i<lastecrvc; i++) {
  var emailTo = ecrvc.getRange(i,2).getValues(); 
  email = emailTo + "@gmail.com";
  emailsList.push(email);
}
var combinedEmails = emailsList.join();
MailApp.sendEmail(combinedEmails, subject, message);