具有多种条件的Google脚本条件格式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了具有多种条件的Google脚本条件格式相关的知识,希望对你有一定的参考价值。

我正在编写一个脚本来有条件地格式化我的电子表格,但我不知道如何创建多个条件。我已经尝试了几次编辑来修复我的问题,即当我运行此函数时,列中的每个空白单元格都会变为红色,或者满足公式2条件的每个单元格都将变为红色。我只想要符合公式2条件且空白的细胞变成红色。

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

当我使用符号.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); 
答案

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

但是,在BooleanCondition文件中注明了这一限制:

每个条件格式规则可以包含单个布尔条件。布尔条件本身包含布尔条件(带有值)和格式设置。根据细胞含量评估标准,得到truefalse值。如果条件评估为true,则条件的格式设置将应用于单元格。

因此,各种when____方法不与其他when___方法结合:在规则上最后使用的是那个对该规则有效的方法,因为它已经取代了规则所使用的先前标准。

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

但是,现在,最接近的方法是使用whenFormulaSatisfied方法,因为您的公式可能会如您所希望的那样复杂,并且如果您可以手动编辑BooleanCondition,则执行相同的计算。

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

乘法运算符相当于布尔值AND,而加法则相当于布尔值OR

以上是关于具有多种条件的Google脚本条件格式的主要内容,如果未能解决你的问题,请参考以下文章

具有多个 IF 条件的 Google Apps 脚本

强制应用条件格式

常用python日期日志获取内容循环的代码片段

基于另一个单元格值的条件格式

添加一行的 Google 表格脚本

IF 函数 - Google 脚本 - 多个条件