2017-06-13 20 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)分配一个不同的属性名称在每次迭代,但你需要的是要使用的数据索引来计算行索引。

参考