#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. Теперь вы объединяете новое сообщение со старым в каждой итерации.
Если вы хотите узнать больше, прочитайте о области действия переменных.