Прежде всего, поскольку вы хотите, чтобы скрипт отправлял электронное письмо (действие, требующее вашей авторизации), вы должны установить триггер редактирования: либо вручную , либо программно . Если вы делаете это программно, вы можете установить триггер, запустив эту функцию один раз:
function createTriggerOnEdit(e) {
var ss = SpreadsheetApp.getActive();
ScriptApp.newTrigger("sendEmailOnApproval")
.forSpreadsheet(ss)
.onEdit()
.create();
}
В результате функция sendEmailOnApproval
будет срабатывать при каждом редактировании электронной таблицы. Эта функция может быть чем-то вроде следующих строк (проверьте подробные пояснения в встроенных комментариях):
function sendEmailOnApproval(e) {
// Get the edited range and sheet using the event object:
var range = e.range;
var editedSheet = range.getSheet();
var textToSearch = "Approved"; // Set which value will cause the email to be sent
// Check that edited cell is in column I, its value is "Approved" and its sheet is "Summary":
if (range.getColumn() === 9 && range.getValue() === textToSearch &&
editedSheet.getName() === "Summary") {
var rowIndex = range.getRow(); // Get index of the edited row
var name = editedSheet.getRange(rowIndex, 4).getValue(); // Get corresponding name in column D
var rangeValues = e.source.getSheetByName("Range").getDataRange().getValues(); // Get values in sheet "Range"
// Iterate through the rows in "Range", looking for the name retrieved from sheet "Summary"
for (var i = 0; i < rangeValues.length; i++) {
var rowValues = rangeValues[i];
if (name === rowValues[0]) { // Check if name matches the one in column D from "Summary"
var mail = composeApprovedEmail(rowValues); // Compose email (your function)
MailApp.sendEmail(admin_email, mail.subject, mail.message); // Send email
return; // End execution so that the script stops iterating through the rows in "Range"
}
}
}
}
Примечания:
- В этом примере вызывается функция
composeApprovedEmail
. Это так же, как тот, который вы предоставили. Остальные предоставленные вами функции не используются.
Ссылка: