Отправка HTML электронной почты нескольким получателям с помощью Google Sheet и AppScript - PullRequest
0 голосов
/ 15 января 2020

Я создал скрипт, который помогает мне отправлять массовые HTML электронные письма нескольким получателям. В моем файле Google Sheet Col 1 содержит адрес электронной почты, а Col 2 - имя получателя. Еще одна вещь, которую я пытаюсь достичь и застрять в том, что я хочу заполнить каждое письмо с именем получателя. Например, я отправляю электронное письмо по адресу xxx@domain.com, и я хочу, чтобы оно начиналось с «Уважаемый ххх» и т. Д. Для всех получателей.

Как это можно сделать?

Мой код выглядит следующим образом:

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 } ) 


    }      
}  

Спасибо

Ответы [ 2 ]

0 голосов
/ 15 января 2020

Как насчет добавления заполнителя в тело письма и замены его именем, которое вы хотите использовать?

Например, шаблон тела письма 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 });

    }  
}
0 голосов
/ 15 января 2020

Вы можете использовать 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.


    }      
}  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...