2016-08-18 65 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