首页 > 解决方案 > 使用 Google Sheet 和 AppScript 向多个收件人发送 HTML 电子邮件

问题描述

我创建了一个脚本,可以帮助我将批量 HTML 电子邮件发送给多个收件人。在我的 Google 表格文件中,第 1 列包含电子邮件地址,第 2 列包含收件人姓名。我试图实现并陷入困境的另一件事是我想用收件人的姓名填充每封电子邮件。例如,我正在向 xxx@domain.com 发送电子邮件,我希望电子邮件以“亲爱的 xxx”开头,等等所有收件人。

如何才能做到这一点?

我的代码如下:

function sendEmails() {
  var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); 
  var lr = ss.getLastRow(); 
  var lc = ss.getLastColumn();

  for (var i = 2;i<=lr;i++){

      var currentEmail = ss.getRange(i, 1).getValue();
      var subjectLine = "Test";
      var htmlOutput = HtmlService.createHtmlOutputFromFile('email'); 
      var email = htmlOutput.getContent();


      MailApp.sendEmail( currentEmail, "test", email, { htmlBody: email } ) 


    }      
}  

谢谢

标签: javascriptemailgoogle-apps-scriptgoogle-sheets

解决方案


您可以使用indexOf查找@字符并将数组拆分为子字符串以仅获取位于 @ 之前的字符。然后,您可以将其添加到您的htmlBody参数中。例如:

function sendEmails() {
  var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); 
  var lr = ss.getLastRow(); 
  var lc = ss.getLastColumn();

  for (var i = 2;i<=lr;i++){

      var currentEmail = ss.getRange(i, 1).getValue();
      var subjectLine = "Test";
      var htmlOutput = HtmlService.createHtmlOutputFromFile('email'); 
      var email = htmlOutput.getContent();

      //My changes start here
      var index = currentEmail.indexOf('@');
      var name = currentEmail.substr(0, index); //chars from position 0 to index

      var head = '<html><body>Dear ' + name + ': <br />';

      MailApp.sendEmail( currentEmail, "test", email, { htmlBody: head + email } ) //You can add + '</body></html>' at the end if it's necessary.


    }      
}  

推荐阅读