уведомление по электронной почте при изменении ячейки

нужна помощь с Google script. У меня есть несколько строк таблицы.

нужен скрипт, который делает следующее:

Если какая-либо ячейка в столбце G была изменена, отправьте уведомление по электронной почте к пользовательскому адресу с информацией из этой строки: информация из ячейка D и новое значение ячейки г.

UPD

Я нашел полезную информацию:

function emailNotification() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  var cell = ss.getActiveCell().getA1Notation();
  var cellvalue = ss.getActiveCell().getValue().toString();
  var recipient = "me@gmail.com";
  var subject = 'Update to '+sheet.getName();
  var body = sheet.getName() + ' has been updated. Visit ' + ss.getUrl() + ' to view the changes on cell: «' + cell + '» New cell value: «' + cellvalue + '»';
  MailApp.sendEmail(recipient, subject, body);
};

этот скрипт отслеживает изменения во всей таблице. И я хотел бы отслеживать изменения только в столбце G и получать значения из столбца D.

вопрос:

Как получить значение ячейки в столбце D, когда значение изменена ячейка в столбце G

наконец скрипт-ответ на мой вопрос

таблицы

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 = "me@gmail.com";
  var message = '';
  if(cell.indexOf('G')!=-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);
};

установить триггер на onEdit и скрипт будет работать штраф в размере

2 ответов


вы должны искать этот форум перед публикацией вопросов; я сделал поиск на почта+клеток и получил несколько результатов :

например, это сообщение ответа делает почти точно, что вы хотите сделать.

редактировать после редактирования:

использовать IF состояние.

что-то вроде этого :

    var cellG = ''
    if(cell.indexOf('D')!=-1){ // = if you edit data in col D
cellG = sheet.getRange('G'+ sheet.getActiveCell().getRowIndex()).getValue()
// add more condition if necessary and/or send your mail (cellG contains the value in column G of the active row
}
    Logger.log(cellG)

правильный способ отслеживания события изменения ячейки-использовать объект события " e " с триггером onEdit. Объект event содержит диапазон, который был изменен, и поэтому вы всегда можете получить содержимое измененной ячейки.

function sendNotification(e){
  var range = e.range;
  range.setNote('Last modified: ' + new Date());
}

Примечание: имя функции не должно быть onEdit, которое является специальным именем в скрипте приложений. Функция onEdit не позволяет отправлять электронную почту из-за ограниченный authMode.

вот сценарий приложения что позволяет отправлять электронное письмо, если ячейка редактируется в определенном диапазоне. Он также позволяет отправлять всю строку, весь столбец или пользовательский диапазон для отправки в уведомлении по электронной почте.