2017-06-13 40 views
0

我想確保電子郵件不發送兩次。該腳本本身是工作,但是中的嵌入:要處理的行數

sheet.getRange(startRow + i, 6).setValue(EMAIL_SENT);

不起作用,但它增加了一個隨機值列40

可能有人幫我找出這個問題?非常感謝您!

function sendEmails() { 
    var sheet = SpreadsheetApp.getActiveSheet(); 
    var range = sheet.getRange(1, 2); 
    var subject = range.getValues(); 
    var range = sheet.getRange(1, 9); 
    var numRows = range.getValues(); 
    var startRow = 4;     
    var dataRange = sheet.getRange(startRow, 1, numRows,9) 
    var data = dataRange.getValues(); 
    var EMAIL_SENT = "EMAIL_SENT"; 
    for (i in data) { 
     var row = data[i]; 
     var emailAddress = row[0];  
     var message = row[8]; 
     var emailSent = row[5]; 
     if (emailSent != EMAIL_SENT) { 
      MailApp.sendEmail(emailAddress, subject, message,{noReply: true}); 
      sheet.getRange(startRow + i, 6).setValue(EMAIL_SENT); 
     } 
    } 
} 
+0

我懷疑'STARTROW + i'正在評估的文本字符串4我的文本字符串,它可能是 「0」 相結合,給你「40 「也許嘗試強制這些數字:'parseInt(startRow)+ parseInt(i)' –

回答

0

簡短的回答

而不是使用for(i in data){...}使用form(var i = 0;i < data.lenght;i++) {...}

說明

for (variable in object)分配一個不同的屬性名稱在每次迭代,但你需要的是要使用的數據索引來計算行索引。

參考