基于1个2个值有条件地设置单元格颜色的格式

时间:2020-10-17 12:10:27

标签: google-apps-script google-sheets google-sheets-formula conditional-formatting

我有一个电子表格,屏幕截图,如果文本包含“ keto” AND “ 250g”,我想给单元格E(绿色)着色。这两个值都不只是一个。目前,我不知道如何对2个字符串执行此操作,仅对1个字符串执行此操作。这是用于1个字符串的代码:

spreadsheet.getActiveSheet().setConditionalFormatRules(conditionalFormatRules);
conditionalFormatRules = spreadsheet.getActiveSheet().getConditionalFormatRules(); 
conditionalFormatRules.push(SpreadsheetApp
    .newConditionalFormatRule() 
    .setRanges([spreadsheet.getRange('E1:E10000')]) 
    .whenTextContains("Brownies") 
    .setBackground('#B7E1CD') 
    .build());

enter image description here

1 个答案:

答案 0 :(得分:0)

使用.whenFormulaSatisfied

在评论中建议@TheMaster。

由于您的代码无效,我不得不对其重新排序。看来您在定义变量之前就在调用它们,并在构建变量之前为其设置了规则。

function myFunction() {
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet()
  var sheet = spreadsheet.getActiveSheet()
  var conditionalFormatRules = sheet.getConditionalFormatRules();
  conditionalFormatRules.push(SpreadsheetApp
    .newConditionalFormatRule() 
    .setRanges([spreadsheet.getRange('E1:E10')])

    // HERE IS THE RELEVANT METHOD
    .whenFormulaSatisfied('=AND( FIND("Keto",E1) , FIND("250g",E1) )')

    .setBackground('#B7E1CD') 
    .build());
  sheet.setConditionalFormatRules(conditionalFormatRules)
}

参考和解释

whenFormulaSatisfied的文档。

我使用AND公式和FIND公式使它仅在单元格包含两者时才返回TRUE

您在复制和粘贴时可能犯了一个错误,但是请注意在致电getConditionalFormatRules之前build()setConditionalFormatRules

做类似事情的另一种方法

这可能与您要查找的不完全相同,但是以防万一。您可以探索onEdit(e)触发器。每次用户对工作表进行编辑时,它将运行。您使用的e参数包含编辑的详细信息,例如范围。在这里,您可以创建一个if语句,以检查它是否包含您想要的字符串。它使您可以将检查逻辑与格式化逻辑分开。如果您需要工作表中更复杂的行为,那么条件格式将很快变得乏味。

以下是一些有关触发器的参考资料: