具有多个条件的谷歌脚本条件格式



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

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

当我使用符号 .whenFormulaSatisfied(formula2(.whenCellEmpty((... 所有空白单元格都变为红色,即使它们不满足 formula2 条件也是如此。

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

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); 

ConditionalFormatRuleBuilder的应用程序脚本文档中没有明确说明,但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

最新更新