Скрипт условного форматирования не работает, пока не будет перезаписан вручную - PullRequest
0 голосов
/ 23 апреля 2019

Я написал скрипт Google Apps, который создает условный формат для диапазона.После запуска скрипта условный формат создается идеально, но он не работает сам по себе: мне нужно вручную ввести «Формат»> «Условный формат»> «Ввести проверенную мной проверку» и сохранить ее (без изменения), чтобы он работалкак следует.

    var hojaCamada = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(camada);
          var range = hojaCamada.getRange("K6:K100");
          var rule = SpreadsheetApp.newConditionalFormatRule()
          .whenFormulaSatisfied('=Y($J6 < $I$3;$K6<1)')
          .setBackground("#ea9999")
          .setRanges([range])
          .build();
          var rules = hojaCamada.getConditionalFormatRules();
          rules.push(rule);
          hojaCamada.setConditionalFormatRules(rules);

Может кто-нибудь помочь мне разобраться в чем проблема?

1 Ответ

1 голос
/ 23 апреля 2019

Я не вижу ничего плохого в вашем коде, я поделюсь некоторыми вещами, которые я делаю по-другому, однако,

Я запускаю свою функцию цветов, очищая существующие правила.

  var spreadsheet = SpreadsheetApp.getActive();
  var sheet = spreadsheet.getSheetByName("x");
  sheet.getRange(1, 1, sheet.getMaxRows(), sheet.getMaxColumns()).activate();
  sheet.clearConditionalFormatRules();
  var conditionalFormatRules = spreadsheet.getActiveSheet().getConditionalFormatRules();

Я также делаю свои диапазоны вручную в каждом правиле

  var rule = SpreadsheetApp.newConditionalFormatRule()
  .setFontColor('#a2c8ec')
  .setBackground('black')
  .whenFormulaSatisfied('=$D1=1')
  .setRanges([spreadsheet.getRange('A:J')])
  .build();  
  conditionalFormatRules.push(rule);

  sheet.setConditionalFormatRules(conditionalFormatRules);

На вашем месте я бы делал эти две вещи, менял способ выбора диапазонов и очищал все старое форматирование при каждом запуске функции.

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