2016-08-18 64 views
0

以下是我的腳本。它會發送電子郵件,但它仍會繼續發送電子郵件,即使被引用的單元格已經顯示「已發送」。任何人都可以告訴我我錯了哪裏?腳本不會停止發送電子郵件


 
function sendEmails() { 
 
    var sheet = SpreadsheetApp.getActiveSheet(); 
 
    var lastRow = sheet.getLastRow(); 
 
    var range = sheet.getRange(2,1,lastRow,13); 
 
    var data = range.getValues(); 
 
    
 
    for (i=0;i<data.length;i++){ 
 
    var employeeName = data [i][6]; 
 
    var startDate = data [i][2]; 
 
    var endDate = data [i][3]; 
 
    var oHours = data [i][4]; 
 
    var email = data [i][14]; 
 
    var emailAd = data [i][1]; 
 
    var response = data [i][9]; 
 
    if (response == "Approved" && email != "Sent"){ 
 
     var subject = "Overtime Request"; 
 
     var message = "Your request for overtime for " + employeeName + " has been " + response + ". This overtime should occur between " + startDate + " to " + endDate + " and should not exceed " + oHours + " hours."; 
 
     MailApp.sendEmail(emailAd,subject,message); 
 
     sheet.getRange(i+2,14).setValue("Sent");} 
 
    else if(response=="Declined" && email != "Sent"){ 
 
     var subject = "Overtime Request"; 
 
     var message = "Your request for overtime for " + employeeName + " has been " + response + "."; 
 
     MailApp.sendEmail(emailAd,subject,message); 
 
     sheet.getRange(i+2,14).setValue("Sent");} 
 
    else if(email == "Sent"){return;} 
 
    }}

回答

0

眼下emailundefinedemail != "Sent"將始終爲true。

在這一行:

var range = sheet.getRange(2,1,lastRow,13); 

getRange()方法得到的列A至M,然後在這行:

var email = data [i][14]; 

你正在試圖獲得的價值列O.

請記住,雖然範圍索引從1,1開始,JavaScript數組 將從[0]索引, [0]。

你只需要改變你的sheet.getRange(2,1,lastRow,13);sheet.getRange(2,1,lastRow,15);這樣你就可以得到你要設置的值"Sent"的價值和你的if()聲明進行評估。

+0

你是上帝送來的。非常感謝。今天我花了很多時間想辦法解決這個問題。謝謝。謝謝。謝謝。 – BTenCate