Как сделать этот код скриптов Google менее повторяющимся? - PullRequest
0 голосов
/ 30 июня 2019

У меня есть этот код, который я скопировал / вставил / изменил из файлов справки Google Scripts:

function DHGreen() {
var sheet = SpreadsheetApp.getActiveSheet();
var range = sheet.getRange("D3:P43");
var rule = SpreadsheetApp.newConditionalFormatRule()
    .whenTextEqualTo("DH")
    .setBackground("#00ff00")
    .setRanges([range])
    .build();
var rule2 = SpreadsheetApp.newConditionalFormatRule()
    .whenTextEqualTo("Mazie")
    .setBackground("#0000ff")
    .setRanges([range])
    .build();
var rule3 = SpreadsheetApp.newConditionalFormatRule()
    .whenTextEqualTo("Herald")
    .setBackground("#9900ff")
    .setRanges([range])
    .build();
var rules = sheet.getConditionalFormatRules();
rules.push(rule);
rules.push(rule2);
rules.push(rule3);
sheet.setConditionalFormatRules(rules);
}

Я чувствую, что должен быть способ сделать это более эффективно, но так как я все ещена копирование / вставку, изменить вещи и надеюсь, что он все еще работает на этапе изучения Google Scripts (гораздо более знакомы с VBA), я просто не уверен, с чего начать.Любая помощь приветствуется.

1 Ответ

0 голосов
/ 30 июня 2019

Вы можете использовать функцию для создания правила, а не повторять этот код.

function makeRule(range, whenTextEqualTo, setBackground) {
  return SpreadsheetApp.newConditionalFormatRule()
    .whenTextEqualTo(whenTextEqualTo)
    .setBackground(setBackground)
    .setRanges([range])
    .build();
}

function DHGreen() {
var sheet = SpreadsheetApp.getActiveSheet();
var range = sheet.getRange("D3:P43");
var rules = sheet.getConditionalFormatRules();
rules.push(makeRule(range, "DH", "#00ff00"));
rules.push(makeRule(range, "Mazie", "#0000ff"));
rules.push(makeRule(range, "Herald", "#9900ff"));
sheet.setConditionalFormatRules(rules);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...