首页 > 解决方案 > Google App Script IF 函数仅检查一行,并将结果应用于所有行

问题描述

我似乎在某个地方出错了。

我正在编写一个脚本,如果 Google 表格单元格变为“是”,它将自动发送提醒电子邮件。

问题是我的脚本似乎将其读取为:如果第二行有“是”,它将对所有行返回 true 并向所有人发送电子邮件,而不管其他行说“是”或“否”。如果任何其他行有一个是,那么它似乎被完全忽略了。

定义要检查的范围:

 //looping through all of the rows
  for (var i = 0; i < data.length; ++i) {
    var row = data[i];


// Creating where the if statement is check
var ss = SpreadsheetApp.getActiveSheet();
    var thisQuarter = ss.getRange("H2:H50").getValue();

要检查的 IF 语句:

// checking for this quarter
if (
  thisQuarter == "Yes") {
      var subject =
        'Your BCP is due to expire this quarter: ';
      MailApp.sendEmail(emailAddress, subject, message,);
      Logger.log('this quarter');
    }

   

  
   
    }
  }

如果有人能给我一些关于我哪里出错的指示,那将不胜感激。

谢谢,

标签: if-statementgoogle-apps-script

解决方案


理想情况下,仅发布工作表的视图副本。我相信问题出在这段代码上:

// checking for this quarter
if (
  thisQuarter == "Yes") {
      var subject =
        'Your BCP is due to expire this quarter: ';
      MailApp.sendEmail(emailAddress, subject, message,);
      Logger.log('this quarter');
    }

thisQuarter 分配在这里:

var thisQuarter = ss.getRange("H2:H50").getValue();

将该行更改为:

var thisQuarter = ss.getRange("H2:H50").getValues();

所以 thisQuarter 是指定范围内的值数组

将 if 语句更改为此,看看它是否有帮助:

for (i = 0; i < thisQuarter.length; i++) {
   if (thisQuarter[i][0] == "Yes" {
    // send email
   }
}

推荐阅读