要处理的行数

时间:2017-06-13 13:05:06

标签: google-apps-script google-sheets

我想确保电子邮件不会发送两次。脚本本身正在工作,但插入:

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

1 个答案:

答案 0 :(得分:0)

简短回答

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

解释

for (variable in object)在每次迭代时分配不同的属性名称,但您需要的是用于计算行索引的数据索引。

参考