Скрипт приложения Google для условного форматирования границы ячейки - PullRequest
0 голосов
/ 10 июля 2020

Простите за тупой вопрос. Но мне очень нужна помощь. У меня есть таблица Google с 26 столбцами и 96 r aws. Я хочу изменить толщину границы ячейки, если ячейка содержит текст, который совпадает со значением ячейки Z6. Есть ли способ написать для этого код сценария приложения Google.

Я пробовал этот код, но не смог

function formatting() {
 var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Chart');
 var range = sheet.getRange("A1:Z100")
 var ruleRed = SpreadsheetApp.newConditionalFormatRule()
.whenFormulaSatisfied("=$Z$6")
.setBackground("green")
.build();

}

ПОМОГИТЕ

1 Ответ

0 голосов
/ 10 июля 2020

Несколько вещей:

  • Правильная формула для условного форматирования будет: "=A1=$Z$6"
  • Соответствующий запрос в скрипте приложений, включая необходимую настройку диапазонов, будет: var ruleRed = SpreadsheetApp.newConditionalFormatRule() .whenFormulaSatisfied("=A1=$Z$6") .setBackground("green") .setRanges([range]) .build();
  • После создания условного правила его необходимо применить к листу, например sheet.setConditionalFormatRules([ruleRed]);

Однако

  • Границы не могут быть отформатированы в рамках условного форматирования, вам нужно использовать другой подход
  • Вы можете использовать метод скрипта приложений setBorder ()
  • Чтобы установить границы, как требуется в Скрипт приложений, вам необходимо
    • получить значение Z6
    • L oop через ваш диапазон, сравнивая все значения с Z6
    • Назначьте границу каждому ячейка, удовлетворяющая условию

Пример для форматирования границ и условного форматирования с помощью скрипта приложений:

function formatting() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Chart');
  var range = sheet.getRange("A1:Z100")
  //border formatting 
  var value = sheet.getRange("Z6").getValue();
  var values = range.getValues();
  for (var i = 0; i < values.length; i++){
    for (var j = 0; j < values.length; j++){
      if (values[i][j] == value){
        range.getCell(i+1, j+1).setBorder(true, true, true, true, false, false);
      }
    }
  }
  //conditional formatting 
  var ruleRed = SpreadsheetApp.newConditionalFormatRule()
  .whenFormulaSatisfied("=A1=$Z$6")
  .setBackground("green")
  .setRanges([range])
  .build();
  sheet.setConditionalFormatRules([ruleRed]);
}
...