Функция GoogleScript, вызывающая ВСЕ значения по сравнению с только что измененной строкой
Приведенная ниже функция вызывает и отправляет электронное письмо для ВСЕХ строк, помеченных как «Закрытые»; но я хочу, чтобы он отправил по электронной почте только тот, который помечен как «Закрыто»; не старые, ранее закрытые строки и я не знаю как это исправить, помогите пожалуйста.
function sendEmails() {
var sheet = SpreadsheetApp.getActiveSheet();
var startRow = 3;
var numRows = 5000;
var dataRange = sheet.getRange(startRow, 1, numRows, 5000);
var data = dataRange.getValues();
var FinalMessage;
for (var i in data) {
var row = data[i];
if (row.includes("Closed")){
// Logger.log("CLOSED" + row);
var emailAddress = ""
var TSRNumber = row[19];
var IssueType = row[4];
var Customer = row[5];
var TankCode = row[13];
var City = row[9];
var State = row[10];
var Region = row[0];
var Terminal = row[1];
switch (Terminal) {
case "Riga MI":
emailAddress = "xxxxxx@xxxx.com";
break;
case "Other":
default:
emailAddress = "xxxx@xxxx.com";
break;
}
var subject = "CLOSED - TSR #" + TSRNumber + " for " + Customer + " in " + City + " " + State
+ " ( " + Region + " )";
var message = "TSR # " + TSRNumber + " for " + Customer + " in " + City + " " + State + " ( "
+ Region + " ) " + "is now Closed" +'\n' +'\n' + "Link to TSR Database: " +
"https://xxxxx.com"
MailApp.sendEmail(emailAddress, "NO-REPLY@xxxxx.com", subject, message);
}
}
}
1 ответ
Для этого сценария вам понадобится устанавливаемый триггер:
function createTrigger() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
ScriptApp.newTrigger('sendEmail').forSpreadsheet(ss).onEdit().create();
}
Эта функция при ручном выполнении создаст триггер для электронной таблицы, который сработает при редактировании ячейки.
Затем сама функция sendEmail будет читать отредактированную ячейку, проверять и заполнять поля как обычно:
function sendEmail(e) {
var sheet = SpreadsheetApp.getActiveSheet();
if ((e.range.getRow() >= 3) && (e.range.getValue() === "Closed")) {
var row = sheet.getRange(e.range.getRow(),1,1,20).getValues();
var emailAddress = ""
var TSRNumber = row[19];
var IssueType = row[4];
var Customer = row[5];
var TankCode = row[13];
var City = row[9];
var State = row[10];
var Region = row[0];
var Terminal = row[1];
switch (Terminal) {
case "Riga MI":
emailAddress = "xxxxxx@xxxx.com";
break;
case "Other":
default:
emailAddress = "xxxx@xxxx.com";
break;
}
var subject = "CLOSED - TSR #" + TSRNumber + " for " + Customer + " in " + City + " " + State
+ " ( " + Region + " )";
var message = "TSR # " + TSRNumber + " for " + Customer + " in " + City + " " + State + " ( "
+ Region + " ) " + "is now Closed" +'\n' +'\n' + "Link to TSR Database: " +
"https://xxxxx.com"
MailApp.sendEmail(emailAddress, "NO-REPLY@xxxxx.com", subject, message);
}
}
Использованная литература: