0

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

正在发送电子邮件,但不分青红皂白,而不仅仅是在满足我要设置的条件时发送。条件:如果范围内的任何单元格 (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 表格中打开它。似乎某些运算符没有被选中,fe "and" 甚至没有突出显示,我收到以下错误消息:"and" is not defined

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

4

1 回答 1

0

Google Apps 脚本基于Javascript

  • “和”的语法是&&
  • 语句的语法ifif(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 脚本教程:

于 2019-10-16T15:50:43.203 回答