javascript - 如何使此 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),我只是不知道从哪里开始。任何帮助表示赞赏。
解决方案
您可以使用函数来创建规则,而不是重复该代码。
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);
}
推荐阅读
- c# - C# 对象派生
- wordpress - 如何使用 wordpress npm 获取特定类别的帖子列表
- php - 如何在 Doctrine 中加入多对多关系?
- swift - 在swift中为字典键构造默认值并设置它的惯用方法
- android - 如何通过android在Firebase中添加子节点?
- ios - iOS 12 - 应用程序未启动
- git - .gitkeep 文件在推送后不存在
- algorithm - 递归中的素数除数
- c# - 为什么如果我尝试使用 CancellationToken.Cancel() 停止任务,那么实际任务会卡在 Task.Wait() 上?
- angular - Angular 4/5 删除特定索引处的子元素