Я искал на форумах, и ответ, скорее всего, там, но мне нужна помощь.
Если буква "Y" введена в столбец A, мне нужно автоматическое электронное письмо, отправленное заранее определенному списку людей. В идеале это электронное письмо должно включать автоматически сгенерированное тело электронного письма в соответствии с данными строки (Товар, поставщик, общая сумма, задание и т. д.).
Это то, что я написал до сих пор. Он отправляет электронное письмо каждый раз, когда я вношу изменения. Я безуспешно пытался уточнить триггеры проекта и бит if (Index of).
function sendNotification() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var cell = ss.getActiveCell().getA1Notation();
var row = sheet.getActiveRange().getRow();
var cellvalue = ss.getActiveCell().getValue().toString();
var recipients = "[email protected]";
var message = '';
if(cell.indexOf('A')!="Y"){
message = sheet.getRange('D'+ sheet.getActiveCell().getRowIndex()).getValue()
}
var subject = 'Update to '+sheet.getName();
var body = sheet.getName() + ' has been updated. Visit ' + ss.getUrl() + ' to view the changes on row: "' + row + '". New comment: "' + cellvalue + '". For message: "' + message + '"';
MailApp.sendEmail(recipients, subject, body);
};
Ответ 1 · рейтинг 2 · ocordova
Ты почти там!
В вашем if заявлении:
if(cell.indexOf('A')!="Y"){
Вам нужно оценить две вещи: во-первых, редактирует ли пользователь столбец A, а во-вторых, если значение ячейки равно "Y".
Для первого у вас уже есть значение текущей ячейки в cellvalue, поэтому просто оцените, если cellvalue == "Y".
Для второго вам нужно оценить, редактирует ли пользователь столбец A, вы можете использовать .getColumnIndex(), чтобы получить индекс диапазона, в этом случае ячейка столбца A вернет 1, поэтому вы оцениваете sheet.getActiveCell().getColumnIndex() == 1
Теперь вам просто нужно использовать логический оператор && чтобы проверить, являются ли оба выражения истинными.
Ваша строка должна выглядеть так:
if(cellvalue == "Y" && sheet.getActiveCell().getColumnIndex() == 1){
Наконец, чтобы убедиться, что электронное письмо отправляется только в том случае, если строка выше оценивается как true, переместите subject, body и MailAppвнутри оператора if:
function sendNotification() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var cell = ss.getActiveCell().getA1Notation();
var row = sheet.getActiveRange().getRow();
var cellvalue = ss.getActiveCell().getValue().toString();
var recipients = "[email protected]";
var message = '';
if(cellvalue == "Y" && sheet.getActiveCell().getColumnIndex() == 1){
message = sheet.getRange('D'+ sheet.getActiveCell().getRowIndex()).getValue();
var subject = 'Update to '+sheet.getName();
var body = sheet.getName() + ' has been updated. Visit ' + ss.getUrl() + ' to view the changes on row: "' + row + '". New comment: "' + cellvalue + '". For message: "' + message + '"';
MailApp.sendEmail(recipients, subject, body);
}
};