Второе условие условного форматирования перезаписывает первое - PullRequest
0 голосов
/ 13 февраля 2019

Итак, я хочу применить условное форматирование к этому листу, я хочу, чтобы он был синим, если столбец 5 - Проект A, и красным, если это Проект B

. При использовании следующего кода применяется проект A, а затемпроект B перезаписывает его / удаляет его.

Это не должно произойти из-за сращивания, я думаю.Что я делаю не так?

Если я уберу строки 13 и 15, я никогда не смогу увидеть первое правило, примененное вообще.

function Colors() {
  var spreadsheet = SpreadsheetApp.getActive();
  var sheet = spreadsheet.getActiveSheet();
  sheet.getRange(1, 1, sheet.getMaxRows(), sheet.getMaxColumns()).activate();

  var conditionalFormatRules = spreadsheet.getActiveSheet().getConditionalFormatRules();
  conditionalFormatRules.splice(conditionalFormatRules.length - 1, 1, SpreadsheetApp.newConditionalFormatRule()
  .setRanges([spreadsheet.getRange('A1:Z1000')])
  .whenFormulaSatisfied('=$E1="Project A"')
  .setFontColor('#0000FF')
  .build());

  spreadsheet.getActiveSheet().setConditionalFormatRules(conditionalFormatRules);

  conditionalFormatRules = spreadsheet.getActiveSheet().getConditionalFormatRules();
  conditionalFormatRules.splice(conditionalFormatRules.length - 1, 1, SpreadsheetApp.newConditionalFormatRule()
  .setRanges([spreadsheet.getRange('A1:Z1000')])
  .whenFormulaSatisfied('=$E1="Project B"')
  .setFontColor('#FF0000')
  .build());
  spreadsheet.getActiveSheet().setConditionalFormatRules(conditionalFormatRules);


};

1 Ответ

0 голосов
/ 14 февраля 2019

Итак .splice(conditionalFormatRules.length - 1, 1, ..) удаляет последний элемент из массива [1] .Если единственным элементом в этом массиве является ваше предыдущее правило форматирования, вы удаляете правило 'A' и заменяете его на 'B' новым.

Если вы просто хотитедобавьте правило в массив, попробуйте функцию push () !

function Colors() {
  var spreadsheet = SpreadsheetApp.getActive();
  var sheet = spreadsheet.getActiveSheet();
  sheet.getRange(1, 1, sheet.getMaxRows(), sheet.getMaxColumns()).activate();

  var conditionalFormatRules = spreadsheet.getActiveSheet().getConditionalFormatRules();
  conditionalFormatRules.push(SpreadsheetApp.newConditionalFormatRule()
  .setRanges([spreadsheet.getRange('A1:Z1000')])
  .whenFormulaSatisfied('=$E1="Project A"')
  .setFontColor('#0000FF')
  .build());

 //We can also remove this and do it all at once at the bottom!    
//spreadsheet.getActiveSheet().setConditionalFormatRules(conditionalFormatRules);

  conditionalFormatRules = spreadsheet.getActiveSheet().getConditionalFormatRules();
  conditionalFormatRules.push(SpreadsheetApp.newConditionalFormatRule()
  .setRanges([spreadsheet.getRange('A1:Z1000')])
  .whenFormulaSatisfied('=$E1="Project B"')
  .setFontColor('#FF0000')
  .build());

spreadsheet.getActiveSheet().setConditionalFormatRules(conditionalFormatRules);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...