2017-06-17 4 views
0

Ich habe das folgende Skript, das eine E-Mail an die entsprechende Person basierend auf einem der Felder in der Formularübermittlung sendet. Es funktioniert angemessen, aber es sendet jedes Mal mehrere E-Mails, wenn ein neuer Eintrag eingereicht wird, und ich bin nicht sicher warum. Kann mir jemand sagen, was in meinem Code falsch ist, um das Problem zu beheben?Senden von doppelten E-Mails auf neuen Formular-Einreichung Eintrag

function sendEmails() { 
    var sheet = SpreadsheetApp.getActiveSheet(); 
    var startRow = 2; // First row of data to process 
    var numRows = 2; // Number of rows to process 
    // Fetch the range of cells A2:B3 
    var dataRange = sheet.getRange(startRow, 1, numRows, 3) 
    // Fetch values for each row in the Range. 
    var data = dataRange.getValues(); 
    var email1 = "[email protected]"; 
    var email2 = "[email protected]"; 
    for (i in data) { 
    var row = data[i]; 
    var emailAddress = row[0]; // First column 
    var message = row[1];  // Second column 
    var subject = "Sending emails from a Spreadsheet"; 
    if (message = "cat") { 
    MailApp.sendEmail(email1, subject, message); 
    if (message = "dog") { 
    MailApp.sendEmail(email2, subject, message); 
    } 
    } 
    } 
     } 
+1

Verwendung == oder === zu testen, für die Gleichwertigkeit in Ihren if-Anweisungen verbessert werden könnte. Wie auch immer, beide Dinge sind wahr. – ScampMichael

+0

@ScampMichael versuchte Ihren Vorschlag, aber kein Glück, es sendet immer noch mehrere. Es ist so, als ob es nicht nur die neue Zeile prüft, um zu bestimmen, wo die E-Mail gesendet werden soll, sondern es werden alle Zeilen geprüft. Ich bin mir nicht sicher, wie ich das beheben soll. –

+0

Wie viele von email1 und wie viele von email2? – ScampMichael

Antwort

1

Ich bin mir ziemlich sicher, dass ein Formular-Vorlage in der letzten Zeile endet und durch die Reihen Iterieren ist nicht erforderlich. Dies setzt voraus, dass Sie das Formularübermittlungsblatt nicht mit Matrixformeln und dergleichen verfälscht haben.

function sendEmails() { 
    var sheet = SpreadsheetApp.getActiveSheet(); 
    var row = sheet.getLastRow(); 
    var dataRange = sheet.getRange(row, 1, 1, sheet.getLastColumn()); 
    var data = dataRange.getValues()[0]; 

    var email1 = "[email protected]"; 
    var email2 = "[email protected]"; 

    var emailAddress = data[0]; // First column 
    var message = data[1];  // Second column 
    var subject = "Sending emails from a Spreadsheet"; 

    if (message == "cat") { 
    MailApp.sendEmail(email1, subject, message); 
    }; 
    if (message == "dog") { 
    MailApp.sendEmail(email2, subject, message); 
    }; 
    } 

Der letzte Teil wahrscheinlich mit Sandy Vorschlag oder einem Schalter> Fall

+0

vielen dank für ihre hilfe! Es funktioniert jetzt! Ich schätze es wirklich. –

2

Diese Linien:

if (message = "cat") { 
    MailApp.sendEmail(email1, subject, message); 
if (message = "dog") { 
    MailApp.sendEmail(email2, subject, message); 
} 

werden sollten:

var email;//Create a new variable 

if (message == "cat") { 
    email = email1; 
} else if (message == "dog") { 
    email = email2; 
} 

MailApp.sendEmail(email, subject, message); 
+0

Vielen Dank @sandygood Ich konnte das jetzt dank Ihrer Hilfe zur Arbeit bringen! –

Verwandte Themen