powiadomienie e-mail o zmianie komórki

Potrzebujesz pomocy ze skryptem google. Mam wiele wierszy arkusz kalkulacyjny .

Potrzebujesz skryptu, który wykonuje następujące czynności:

Jeśli jakakolwiek komórka w kolumnie G została zmieniona, Wyślij powiadomienie e-mail na własny adres z informacjami z tego wiersza: informacja z komórka D i nowa wartość komórki G.

UPD

Znalazłem przydatne informacje:

function emailNotification() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  var cell = ss.getActiveCell().getA1Notation();
  var cellvalue = ss.getActiveCell().getValue().toString();
  var recipient = "[email protected]";
  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);
};

Ten skrypt śledzi zmiany w całej tabeli. I chciałbym Śledź zmiany tylko w kolumnie G i pobieraj wartości z kolumny D.

Pytanie:

Jak uzyskać wartość komórki w kolumnie D, gdy wartość ma zmiana komórki w kolumnie G

Wreszcie skrypt-odpowiedź na moje pytanie

Arkusz kalkulacyjny

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('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);
};

Ustaw trigger na onEdit i skrypt będzie działał poprawnie

Author: j0k, 2013-03-11

2 answers

Powinieneś przeszukać to forum przed wysłaniem pytań; szukałem na email+cell i dostałem kilka wyników:

Na przykład, ta odpowiedź post robi prawie dokładnie to, co chcesz zrobić.

Edytuj po edycji:

Użyj warunku IF.

Coś takiego:

    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)
 6
Author: Serge insas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:18:06

Prawidłowym sposobem śledzenia zdarzenia zmiany komórki jest użycie obiektu event " e " z wyzwalaczem onEdit. Obiekt event zawiera zakres, który został edytowany i dlatego zawsze można uzyskać zawartość komórki, która została zmieniona.

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

Uwaga: nazwa funkcji nie powinna być onEdit, która jest specjalną nazwą w skrypcie aplikacji. Funkcja onEdit nie pozwala na wysyłanie wiadomości e-mail z powodu LIMITED authMode.

Oto skrypt aplikacji , który pozwala wysłać e-mail, jeśli komórka jest edytowany w określonym zakresie. Umożliwia również wysyłanie całego wiersza, całej kolumny lub niestandardowego zakresu, który ma zostać wysłany w wiadomości e-mail z powiadomieniem.

 1
Author: Hari Das,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-12 12:08:44