【发布时间】:2019-04-11 19:53:55
【问题描述】:
我想在 Google 表格中为以下情况制作一个宏
在工作表列中,说 J 列,允许的文本输入是“A”、“B”和“C”。
只要我输入A、B 或C(在Jth 列中),单元格背景颜色应分别变为“绿色”、“黄色”和“红色”。
我该怎么做?
我对宏不太了解,我只是得到了这样做的任务。 我能得到一些帮助吗?
【问题讨论】:
标签: google-apps-script google-sheets
我想在 Google 表格中为以下情况制作一个宏
在工作表列中,说 J 列,允许的文本输入是“A”、“B”和“C”。
只要我输入A、B 或C(在Jth 列中),单元格背景颜色应分别变为“绿色”、“黄色”和“红色”。
我该怎么做?
我对宏不太了解,我只是得到了这样做的任务。 我能得到一些帮助吗?
【问题讨论】:
标签: google-apps-script google-sheets
如果我的理解是正确的,这两个示例脚本怎么样?请认为这只是几个答案之一。
在这个示例脚本中,使用了简单触发器的“OnEdit”事件。
请将以下脚本复制并粘贴到脚本编辑器中,然后保存。然后,请将值放入“J”列。
function onEdit(e) {
if (e.range.getColumn() == 10) {
var colors = {A: "green", B: "yellow", C: "red"};
if (Object.keys(colors).indexOf(e.value) > -1) {
e.range.setBackground(colors[e.value]);
} else {
e.range.setValue("");
}
}
}
在此示例脚本中,将数据验证和条件格式规则都设置为“J”列。
请将以下脚本复制并粘贴到脚本编辑器中,然后保存。然后,在脚本编辑器上运行myFunction()。在此脚本中,该条件仅通过运行一次脚本来起作用。
function myFunction() {
var rangeA1Notation = "J:J"; // Column "J"
var sheet = SpreadsheetApp.getActiveSheet();
var range = sheet.getRange(rangeA1Notation);
// Set Data Validation
var rule = SpreadsheetApp.newDataValidation().withCriteria(SpreadsheetApp.DataValidationCriteria.VALUE_IN_LIST, [["A", "B", "C"], false]).setAllowInvalid(false).build();
range.setDataValidation(rule);
// Set Conditional Format Rule
var rules = sheet.getConditionalFormatRules();
rules.push(SpreadsheetApp.newConditionalFormatRule().whenTextEqualTo("A").setBackground("green").setRanges([range]).build());
rules.push(SpreadsheetApp.newConditionalFormatRule().whenTextEqualTo("B").setBackground("yellow").setRanges([range]).build());
rules.push(SpreadsheetApp.newConditionalFormatRule().whenTextEqualTo("C").setBackground("red").setRanges([range]).build());
sheet.setConditionalFormatRules(rules);
}
如果这些方法不是您想要的,我很抱歉。
【讨论】:
OnEdit 函数放入脚本编辑器并保存。现在如何将它应用于 J 列?