【问题标题】:Sending HTML email to multiple recipients using Google Sheet and AppScript使用 Google Sheet 和 AppScript 向多个收件人发送 HTML 电子邮件
【发布时间】:2020-05-02 04:20:02
【问题描述】:

我创建了一个脚本,可以帮助我向多个收件人发送批量 HTML 电子邮件。 在我的 Google 表格文件中,第 1 列包含电子邮件地址,第 2 列包含收件人姓名。 我试图实现并陷入困境的另一件事是我想用收件人的姓名填充每封电子邮件。例如,我正在向 xxx@domain.com 发送电子邮件,我希望所有收件人的电子邮件都以“Dear 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 } ) 


    }      
}  

谢谢

【问题讨论】:

    标签: javascript email google-apps-script google-sheets


    【解决方案1】:

    您可以使用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.
    
    
        }      
    }  
    

    【讨论】:

      【解决方案2】:

      如何在电子邮件正文中添加一个占位符并将其替换为您要使用的名称?

      例如,HTML 电子邮件正文模板可能类似于:

      <!DOCTYPE html>
      <html>
       <head>
         <base target="_top">
       </head>
       <body>
             <h1>Dear {0},</h1>
             <p>Let's try Apps Script!</p>
       </body>
      </html>
      

      然后稍微改变你原来的脚本:

      function sendEmails() {
        var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); 
        var lr = ss.getLastRow(); 
      
        for (var i=2; i<=lr; i++){
      
          var userEmail = ss.getRange('A'+i).getValue();
          var userName = ss.getRange('B'+i).getValue();
          var subject = 'Test Personalized Mass Email';
          var htmlOutput = HtmlService.createHtmlOutputFromFile('SampleEmail'); 
          var email = htmlOutput.getContent();
          email = email.replace('{0}', userName);
      
          MailApp.sendEmail(userEmail, subject, email, { htmlBody: email });
      
          }  
      }
      

      【讨论】:

        猜你喜欢
        • 2014-07-08
        • 2013-10-30
        • 2012-05-18
        • 2014-06-22
        • 2022-01-02
        • 1970-01-01
        • 2017-12-05
        相关资源
        最近更新 更多