【问题标题】:Check if any cell in specified range meets 2 conditions检查指定范围内的任何单元格是否满足2个条件
【发布时间】:2026-01-26 20:45:02
【问题描述】:

我正在编写一个宏,如果满足两个条件,它会发送警报电子邮件。

正在发送电子邮件,但不分青红皂白,而不仅仅是在满足我要设置的条件时发送。 条件:如果范围内的任何单元格 (I1:I9999) 的背景颜色为白色并且包含文本“QC”,则发送电子邮件。 这是我尝试过的:

 var QCJobRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("WIP").getRange("I1:I9999"); 
  var Location = QCJobRange.getValue();

  // Check for white cells with value=QC in Location column

  if (Location = "QC") and (Background = "#ffffff");

// Fetch the email address
var emailRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("WIP").getRange("C2");
var emailAddress = emailRange.getValues();

// Send Alert Email.
var message = 'bla';
var subject = 'bla';
MailApp.sendEmail(emailAddress, subject, message);

我直接在脚本编辑器中工作,您可以从 Google 表格中打开它。 似乎有些运营商没有被选中,f。 e. “and”甚至没有突出显示,我收到以下错误消息:“and”未定义

我一直在梳理论坛寻找一个简单的解决方案,但我有点卡在“和”的问题上。 有什么建议吗?

【问题讨论】:

    标签: if-statement google-apps-script google-sheets scripting logical-operators


    【解决方案1】:

    Google Apps Script 基于Javascript

    • “和”的语法是&&
    • if 语句的语法是 if(condition1&&condition2){...do something...};
    • getValue() 方法适用于单个值(来自单个单元格),而 getValues() 用于表示二维数组的值范围
    • 如果要比较两个值,请使用运算符==

    如果单元格“I1”的背景为白色且其值为“QC”,则此处是修改roder 中的代码以发送消息的示例:

    function myFunction() {
      //if you do not have 999 rows full of data, please reduce your range - otherwise your code will be slow
       var QCJobRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("WIP").getRange("I1:I9999"); 
       var Locations = QCJobRange.getValues();
       var firstLocation=Locations[0][0];
      // Check for white cells with value=QC in Location column
      if (firstLocation == "QC"&& QCJobRange.getBackgrounds()[0][0]== "#ffffff"){
        // Fetch the email address
        var emailRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("WIP").getRange("C2");
        var emailAddress = emailRange.getValue();
        // Send Alert Email.
        var message = 'bla';
        var subject = 'bla';
        MailApp.sendEmail(emailAddress, subject, message);
      }
    }
    

    有关更多示例和信息,请参阅 Apps 脚本教程:

    【讨论】:

      最近更新 更多