首页 > 解决方案 > 如何使此 google 脚本代码不那么重复?

问题描述

我有从 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);
}

我觉得应该有一种方法可以更有效地做到这一点,但由于我仍在复制/粘贴,更改内容并希望它仍然可以在学习谷歌脚本的阶段工作(更熟悉 VBA),我只是不知道从哪里开始。任何帮助表示赞赏。

标签: javascriptoptimizationgoogle-apps-script

解决方案


您可以使用函数来创建规则,而不是重复该代码。

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);
}

推荐阅读