Google Apps-Skript - E-Mail basierend auf dem Datum in der Zelle senden

Ich habe mich umgesehen und habe Kleinigkeiten, aber ich kann das Puzzle nicht zusammensetzen. Ich versuche, ein Skript zu erstellen, das auf einem Trigger ausgeführt wird, der für die tägliche Ausführung konfiguriert ist. Der Trigger wird im Editor unter der Option Ressourcen eingerichtet.

Grundsätzlich suche ich das Skript, um einen Bereich von Zellen zu erfassen, ein Fälligkeitsdatum zu identifizieren, das in einer Spalte ausgefüllt wird, und es mit dem aktuellen Datum abzugleichen. Wenn es passt, senden Sie eine E-Mail. Ich habe mit dem Senden einer E-Mail aus dem Spreadsheet-Tutorial bei Google begonnen. Ich habe eine if-Anweisung hinzugefügt, um nach dem Datum zu suchen, aber ich verliere es beim Vergleich mit dataRange. Jemand könnte helfen, diese zu korrigieren, oder mich auf die Richtung der Forschung hinweisen.

Das Skript scheint zu laufen, aber es passiert nichts, was meines Erachtens daran liegt, dass "if (currentTime == dataRange)" der dataRange nicht richtig übereinstimmt?

Hier ist der Code:

function sendEmails() {
var sheet = SpreadsheetApp.getActiveSheet();
var startRow = 2;  // First row of data to process
var numRows = 50;   // Number of rows to process
// Fetch the range of cells
var dataRange = sheet.getRange(startRow, 1, numRows, 2)
// Fetch values for each row in the Range.
var data = dataRange.getValues();   
//Get todays date     
var currentTime = new Date();
var month = currentTime.getMonth() + 1;
var day = currentTime.getDate();
var year = currentTime.getFullYear();      
//Test column  for date due & match to current date
    if ( currentTime == dataRange) {
  for (i in data) {
var row = data[i];
var emailAddress = row[0];  // First column
var message = row[1];       // Second column
var subject = "Task Item Due";
MailApp.sendEmail(emailAddress, subject, message);

}
}
}

Ich aktualisiere den Vorschlag von Srik und biete seinen Vorschlag im folgenden Code an. Ich habe ein paar Mal versucht, dies zu veröffentlichen, daher bin ich mir nicht sicher, warum es keine Peer-Review in der Vergangenheit gibt.

 function sendEmail() {

var sheet = SpreadsheetApp.getActiveSheet();
var startRow = 2;  // First row of data to process
var numRows = 50;   // Number of rows to process

var dataRange = sheet.getRange(startRow, 1, numRows, 50);

// Fetch values for each row in the Range.
var data = dataRange.getValues();
//Browser.msgBox(data)

for (i in data) {
var row = data[i];
var date = new Date();
var sheetDate = new Date(row[1]);

if (date.getDate() == sheetDate.getDate() && date.getMonth() == sheetDate.getMonth() && date.getFullYear() == sheetDate.getFullYear());
{
  var emailAddress = row[0];  // First column
  var message = row[2];       // Second column
  var subject = "Sending emails from a Spreadsheet";
  MailApp.sendEmail(emailAddress, subject, message);
 // Browser.msgBox(emailAddress)

}

}

}

Der Code scheint zu laufen, aber ich erhalte die folgende Fehlermeldung im Skript-Editor. Msgstr "E - Mail konnte nicht gesendet werden: kein Empfänger (Zeile 23)". Es werden jedoch weiterhin E-Mails gesendet. Es sollte die Daten vergleichen und die E-Mail nur senden, wenn das Datum übereinstimmt. Es wird eine E-Mail für jede Zeile gesendet. Ich habe die Tabelle geteilt, um den Code und die Einrichtung der Tabelle zu sehen.Freigegebene Tabelle

AKTUALISIERTER CODE W / SERGE HILFE zum Logger und Utilities.formatDate .. Danke !!

function sendEmail() {
var sheet = SpreadsheetApp.getActiveSheet();
var startRow = 2;  // First row of data to process
var numRows = sheet.getLastRow()-1;   // Number of rows to process
// Fetch the range of cells A2:B3
var dataRange = sheet.getRange(startRow, 1, numRows, sheet.getLastColumn());
// Fetch values for each row in the Range.
var data = dataRange.getValues();
//Logger.log(data)

for (i in data) {
  var row = data[i];
  var date = new Date();
  date.setHours(0);
  date.setMinutes(0);
  date.setSeconds(0);
  //Logger.log(date);
  var sheetDate = new Date(row[2]);
 //Logger.log(sheetDate);
 var Sdate = Utilities.formatDate(date,'GMT+0200','yyyy:MM:dd')
 var SsheetDate = Utilities.formatDate(sheetDate,'GMT+0200', 'yyyy:MM:dd')
     Logger.log(Sdate+' =? '+SsheetDate)
        if (Sdate == SsheetDate){
          var emailAddress = row[0];  // First column
          var message = row[1];       // Second column
          var subject = "Your assigned task is due today." +message;
          MailApp.sendEmail(emailAddress, subject, message);
          //Logger.log('SENT :'+emailAddress+'  '+subject+'  '+message)
            }    
   }
  }

Antworten auf die Frage(3)

Ihre Antwort auf die Frage