Beschränken Sie Benachrichtigungen, die für Änderungen gesendet werden, auf die in Spalten verwiesen wird

Ich habe verwiesendieser Beitrag zuletzt, um einen Startkalender mit Datum und Namen zu erstellen:

Die zwei Spalten, die ich habe, sind eine für ein Datum (A) und die andere für den Startnamen / die Beschreibung (B). Im Idealfall wollte ich Benachrichtigungen senden, wenn:

Es gab einen neuen Namen für den Starteintrag (B). aber noch nicht unbedingt ein Datum eingegeben (A)Separat Senden einer Aktualisierung für Datumsänderungen (A) und Referenzieren des Startnamens (B); Es wird wahrscheinlich keinen Fall geben, in dem ich ein Datum, aber keinen Startnamen habe (es sei denn, ich gebe gerade ein Datum nach dem anderen ein). Es sollten also keine Benachrichtigungen gesendet werden, wenn nur ein Datum eingegeben wurde und kein entsprechendes vorhanden ist B-Zelle noch.

Derzeit werden mit diesem Code auf folgende Weise einige Fehlalarme angezeigt:

1.) Wenn ich kein Datum (A) eingebe, aber Text in Spalte (B) schreibe, erhalte ich eine Datums-E-Mail, die leer ist, aber auf (B) verweist. Ich möchte einschränken, dass die Benachrichtigung nicht gesendet wird, wenn die entsprechende Zelle in Spalte A leer ist

2.) Ich erhalte manchmal doppelte Datums-E-Mails (A). Dies hat etwas mit dem Hinzufügen eines Datums zu tun, an dem die zweite 'if'-Bedingung vorliegt, um nach Spalte B (Startname) zu suchen. Wenn ich dann ein neues Datum hinzufüge, erhalte ich zwei E-Mails zum Hinzufügen des Datums.

3.) Wenn ich einen Startnamen (B), aber kein Datum (A) eingebe, erhalte ich beide E-Mails. Dies geschieht, wenn die zweite Bedingung vorliegt. Es wird bevorzugt, keine Datums-E-Mail zu erhalten, wenn die Datumszelle (A) leer ist.

Ich habe auch gerade bemerkt, dass das Löschen und die leeren Zellen auch Benachrichtigungs-E-Mails zu senden scheinen.

    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 mycell = ss.getActiveSelection();
  var cellcol = mycell.getColumn(); 
  var recipients = "[email protected]";
  var message = '';
  if(cell.indexOf('A')!=-1){ 
    message = sheet.getRange('B'+ sheet.getActiveCell().getRowIndex()).getValue()
  }
  var subject = ':Date modification for  «' + message + '»';
  var body = 'The launch tracker has been updated. \n\n\nA date modification of: «' + cellvalue + '» has occured for the following user-facing change: «' + message + '» \n\n\nThis modification should also be reflected on the Launch Calendar. \n\n\nVisit: ' + ss.getUrl() + ' to view the modification, found in row: «' + row + '»';
  MailApp.sendEmail(recipients, subject, body);
  if (cellcol == 2)
  var subject = 'New addition of «' + cellvalue + '»';
  var body = 'The waypoint tracker has been updated. \n\n\nA new user-facing change of: «' + cellvalue + '» has been added. \n\n\nThis modification should also be reflected on the Launch Calendar when date information is added. \n\n\nVisit: ' + ss.getUrl() + ' to view the modification, found in cell: «' + cell + '»';
  MailApp.sendEmail(recipients, subject, body);
} 

Antworten auf die Frage(0)

Ihre Antwort auf die Frage