Сценарий приложения Google — отправка электронной почты с использованием только 1 строки данных на электронное письмо

#google-apps-script #google-sheets

#google-apps-script #google-sheets

Вопрос:

Я смог создать скрипт для отправки электронного письма, если в Google sheets вводится новая строка данных и если статус слияния не «передан». Однако скрипт отправляет электронные письма с несколькими строками данных в одном электронном письме, которое не является «переданным». Как я могу настроить сценарий, чтобы использовать только одну строку данных на электронное письмо? (1 строка данных = 1 электронное письмо) Заранее спасибо!

Google Sheets

  function sendEmail() {

 var ActiveSheet = 
 SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Pass");

 var StartRow = 2;

 var RowRange = ActiveSheet.getLastRow() - StartRow   1;

 var WholeRange = ActiveSheet.getRange(StartRow,1,RowRange,10);

 var AllValues = WholeRange.getValues();

 var message = "";

 for (var i=0;i<AllValues.length;i  ) 

 {

 var CurrentRow = AllValues[i];

 var EmailSent = CurrentRow[9];

 if (EmailSent!="pass")

 {
 
   message  =
      "<p><b>Name: </b>"   CurrentRow[2]   "</p>"  
      "<p><b>Date: </b>"   CurrentRow[2]   "</p>"  
      "<p><b>Referral Link: </b>"   CurrentRow[8]   "</p>"  
      "<p><b>Signup Link: </b>"   CurrentRow[8]   "</p><br><br>";
   
 var setRow = i   StartRow;

 ActiveSheet.getRange(setRow, 10).setValue("pass");

 var SendTo = CurrentRow[4] ;

 var Subject = "[Action Required] - Virtual Interview Signup";

 var CC = CurrentRow[7] ;

 var ReplyTo = CurrentRow [7] ;

 //send the actual email  
 MailApp.sendEmail({

      to: SendTo,

      cc: CC,

      subject: Subject,

      replyto: ReplyTo,

      htmlBody: message,

     });
    }
  }
}
  

Ответ №1:

при успешной отправке почты в вашем if() состоянии вы можете использовать break; , которое приведет к выходу потока из цикла.

Комментарии:

1. После добавления ‘break;’ — он не отправляет электронные письма непрерывно для каждой строки, которая не удовлетворяет if(), и он просто останавливается на следующей строке, которая не соответствует if (). Кроме того, электронные письма собирают все строки данных вплоть до последней строки if() — пример: электронная почта для строки 7 будет содержать данные с 1-й по 7-ю строку. Надеюсь, я смогу отправлять электронные письма для каждой строки, которая не удовлетворяет критериям if (), только с данными из этой строки.

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

Ответ №2:

Переменная «message» должна быть объявлена внутри цикла for. Теперь вы объединяете новое сообщение со старым в каждой итерации.

Если вы хотите узнать больше, прочитайте о области действия переменных.