【问题标题】:Google Script Conditional Formatting with multiple conditions具有多个条件的 Google Script 条件格式
【发布时间】:2018-05-21 21:33:46
【问题描述】:

我正在编写一个脚本来有条件地格式化我的电子表格,但我不知道如何创建多个条件。我尝试了几次编辑来解决我的问题,即当我运行这个函数时,列中的每个空白单元格都会变成红色,或者每个满足公式2条件的单元格都会变成红色。我只希望同时满足公式 2 条件且为空白的单元格变为红色。

当我使用符号 .whenCellEmpty().whenFormulaSatisfied(formula2)... 所有满足公式2条件的单元格都会变成红色,即使它们不是空白的。

当我使用符号 .whenFormulaSatisfied(formula2).whenCellEmpty()... 所有的空白单元格都会变成红色,即使它们不符合公式 2 的条件。

有没有办法将这两个条件写入同一个规则?

var range2a = sheet.getRange(3, 16, sheet.getLastRow()-2, 1);
var range2b = sheet.getRange(3, 17, sheet.getLastRow()-2, 1);
var formula2 = '=OR(D3:D="Sale Escrow", D3:D="Sold", D3:D="Subsequent 
       Issue")';
var rule2a = SpreadsheetApp.newConditionalFormatRule()
    .whenCellEmpty().whenFormulaSatisfied(formula2)
    .setBackground("#FF0000")
    .setRanges([range2a])
    .build();
var rules2a = sheet.getConditionalFormatRules();
rules2a.push(rule2a);
sheet.setConditionalFormatRules(rules2a);


var rule2b = SpreadsheetApp.newConditionalFormatRule()
    .whenCellEmpty()
    .setBackground("#FF0000")
    .setRanges([range2b])
    .build();
var rules2b = sheet.getConditionalFormatRules();
rules2b.push(rule2b);
sheet.setConditionalFormatRules(rules2b); 

【问题讨论】:

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


    【解决方案1】:

    在 ConditionalFormatRuleBuilder 的 Apps 脚本文档中没有明确说明,但 when____ 方法用作一次性快捷方式,通过为其创建 BooleanCondition 来定义规则何时激活。

    但是,BooleanCondition 文档中指出了限制:

    每个条件格式规则可能包含一个布尔条件。布尔条件本身包含一个布尔条件(带有值)和格式设置。该标准根据单元格的内容进行评估,产生true 或false 值。如果条件的计算结果为 true,则条件的格式设置将应用于单元格。

    因此,各种when____ 方法不会与其他when___ 方法结合使用:规则中最后使用的方法是对该规则有效的方法,因为它已经替换了该规则使用的先前条件.

    请注意,BooleanCondition 是 Apps 脚本中的只读类 - 程序员没有可用的方法来手动构造或修改 BooleanCondition。如果可以创建或修改BooleanCondition,理论上可以创建基于多个标准评估单元格的可评估布尔条件。

    然而,目前最接近的方法是使用whenFormulaSatisfied 方法,因为您的公式可以根据您的需要复杂,并且执行与手动编辑BooleanCondition 时相同的计算。

    =OR(D1="A", D1="B", D1="C")*NOT(A1="")

    乘法运算符等效于布尔值AND,而加法运算符等效于布尔值OR。

    【讨论】:

      猜你喜欢
      • 2020-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-01
      相关资源
      最近更新 更多