在以下情况下,我想在Google工作表中创建一个宏
在工作表列的 say列J 中,允许的文本输入为“ A”,“ B”和“ C”。
一旦我将A
,B
或C
(在第J
列中)放入,单元格背景色应更改为“绿色”,“黄色”和“红色”。
我该怎么做?
我对宏不是很了解,我只是有要做的事情。 我可以帮忙吗?
答案 0 :(得分:1)
如果我的理解是正确的,那么这两个示例脚本又如何呢?请认为这只是几个答案之一。
在此示例脚本中,使用了简单触发器的“ 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);
}
如果这些方法不是您想要的,我表示歉意。