Условное форматирование Google Script с несколькими условиями - PullRequest
0 голосов
/ 22 мая 2018

Я пишу скрипт для условного форматирования электронной таблицы, но я не знаю, как создать несколько условий.Я попытался несколько изменений, чтобы исправить мою проблему, которая заключается в том, что, когда я запускаю эту функцию, каждая пустая ячейка в столбце станет красной, или каждая ячейка, которая соответствует условиям формулы 2 станет красной.Я хочу, чтобы только ячейки, которые удовлетворяли условиям формулы 2 и были пустыми, стали красными.

Когда я использую обозначение .whenCellEmpty (). WhenFormulaSatisfied (Formula 2) ... Все ячейки, которые удовлетворяют условиям формулы 2, становятся красными, даже если они не пустые.

Когда я использую обозначение .whenFormulaSatisfied (формула2) .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); 

1 Ответ

0 голосов
/ 23 мая 2018

Это явно не указано в документации скрипта приложения для ConditionalFormatRuleBuilder, но методы when____ служат в качестве одноразовых ярлыков, которые определяют, когда правило активируется, путем создания BooleanCondition за это.

Ограничение, однако, отмечено в документации BooleanCondition:

Каждое правило условного формата может содержать одно логическое условие.Само логическое условие содержит логические критерии (со значениями) и параметры форматирования.Критерии оцениваются по содержимому ячейки, что приводит к значению true или false.Если критерий оценивается как true, настройки форматирования условия применяются к ячейке.

Таким образом, различные методы when____ не сочетаются с другими методами when___: какой из них используется последнимправило, является активным для этого правила, поскольку оно заменило предыдущие критерии, которые использовалось этим правилом.

Обратите внимание, что BooleanCondition является классом только для чтения в скрипте приложений - естьу программиста нет методов для ручного построения или изменения BooleanCondition.Если бы можно было создать или изменить BooleanCondition, можно теоретически создать оцениваемое логическое условие, которое оценивает ячейку на основе нескольких критериев.

На данный момент, однако, самый близкий подход - метод whenFormulaSatisfied., поскольку ваша формула может быть настолько сложной, насколько вы хотите, и выполнять те же вычисления, что и вы, если бы вы могли вручную редактировать BooleanCondition.

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

Оператор умножения эквивалентен логическому AND, а сложение будет эквивалентно логическому OR.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...