2017-06-17 93 views
0

我有以下腳本根據表單提交中的一個字段發送電子郵件給適當的人。它正在正常工作,但每次提交新條目時它都會發送多封電子郵件,我不知道爲什麼。有人能告訴我我的代碼中有什麼問題來解決這個問題嗎?在新的表單提交條目上發送重複的電子郵件

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

使用改進的==或===以測試等效於你的if語句。因爲這兩個項目都評估爲真。 – ScampMichael

+0

@ScampMichael嘗試了你的建議,但沒有運氣,它仍然發送多個。就好像它不是隻檢查新行來確定發送電子郵件的位置,而是檢查所有行。我不知道如何解決這個問題。 –

+0

有多少email1和多少email2? – ScampMichael

回答

1

我敢肯定表單提交的最後一行結束,並通過行迭代是不必要的。這假定你沒有用數組公式和你的表單提交表格。

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

最後一部分也許可以與桑迪的建議或開關>情況下

+0

非常感謝您的幫助!它現在有效!我真的很感激它。 –

2

這些行:

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

應該是:

var email;//Create a new variable 

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

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

非常感謝你@sandygood感謝你的幫助,我現在能夠得到這個工作。 –

相關問題