首页 > 解决方案 > 跳过数据的条件未按预期工作

问题描述

大家好,我从以前的帖子中复制了这个,并根据我的需要进行了匹配。当“已发送”一词在第 10 列时,我无法阻止它发送整个列表。此时,我对编码的混乱程度超出了我的预期,并且感觉它变得混乱了。

有人可以看看它,看看缺少什么吗?

它会发送电子邮件并做我需要的一切,但到目前为止,它只发送所有数据行,无论是否Sent在列中。

function sendEmails2() {

    //setup function
    var ActiveSheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
    var StartRow = 2;
    var RowRange = ActiveSheet.getLastRow() - StartRow + 1;
    var WholeRange = ActiveSheet.getRange(StartRow,1,RowRange,11);
    var AllValues = WholeRange.getValues();

    var message = "";
    //iterate loop
    for (i in AllValues) {

        //set current row
        var CurrentRow = AllValues[i];

        //define column to check if sent
        var EmailSent = CurrentRow[10];

        //if row has been sent, then continue to next iteration
        if (EmailSent == "sent") 
         continue;

        //set HTML template for information
        message +=
        "<p><b>Sales Rep: </b>" + CurrentRow[0] + "</p>" +
        "<p><b>Case ID: </b>" + CurrentRow[1] + "</p>" +
        "<p><b>Name: </b>" + CurrentRow[2] + "</p>" +
        "<p><b>Signing Date: </b>" + CurrentRow[3] + "</p>" +
        "<p><b>Draft Date: </b>" + CurrentRow[4] + "</p>" +
        "<p><b>Sign to Draft: </b>" + CurrentRow[5] + "</p>" +
        "<p><b>Enrolled Debt: </b>" + CurrentRow[6] + "</p><br><br>";

        //set the row to look at
        var setRow = parseInt(i) + StartRow;

        //mark row as "sent"
        ActiveSheet.getRange(setRow, 10).setValue("sent");
   }

   //define who to send email to 
   var SendTo = "my email address" + "," + "";

   //set subject line
   var Subject = "NEW DEAL CLOSED";

   //send the actual email  
   MailApp.sendEmail({
      to: SendTo,
      cc: "",
      subject: Subject,
      htmlBody: message,
  });
}

标签: emailgoogle-apps-scriptgoogle-sheets

解决方案


var EmailSent = CurrentRow[10] 中存在错误,其中实际考虑的列在 11 中。当从工作表中获取整个数据范围时,列索引从 0 开始,因此第 10 列要采用的实际索引应该是 9

 //define column to check if sent
    var EmailSent = CurrentRow[9];

推荐阅读