google-apps-script - 用于根据输入文本更改单元格背景颜色的 Google 表格宏
问题描述
我想在谷歌表中为以下情况制作一个宏
在工作表列中,比如列 J,允许的文本输入是“A”、“B”和“C”。
一旦我输入A
,B
或C
(在第J
th 列中),单元格背景颜色应分别变为“绿色”、“黄色”和“红色”。
我怎样才能做到这一点?
我对宏不太了解,我只是得到了这样做的任务。我能得到一些帮助吗?
解决方案
- 你想改变编辑单元格的背景颜色,只有当“A”、“B”和“C”输入到“J”列时。
- 您的标题和标签中的“Google 工作表宏”是 Google Apps 脚本。
如果我的理解是正确的,那么这两个示例脚本怎么样?请认为这只是几个答案之一。
示例脚本 1:
在此示例脚本中,使用了简单触发器的“OnEdit”事件。
流动:
- 检查编辑单元格的范围。如果范围是“J”列,则运行脚本。
- 检查输入的值。如果输入值为“A”、“B”和“C”,则背景颜色发生变化。
- 如果输入的值不是“A”、“B”和“C”,则删除该值。
脚本:
请将以下脚本复制并粘贴到脚本编辑器中,然后保存。然后,请将值放入“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”列的几行中,请告诉我。
示例脚本 2:
在此示例脚本中,将数据验证和条件格式规则都设置为“J”列。
流动:
- 设置数据验证
- 这样,只有“A”、“B”和“C”的值可以放入“J”列。
- 设置条件格式规则
- 这样,当“A”、“B”和“C”的值被放入“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);
}
参考:
如果这些方法不是您想要的,我很抱歉。
推荐阅读
- laravel - @if at Script TAG laravel
- docker - 如何将容器内的文件系统映射到 Visual Studio Code 内的工作空间
- java - Spring Data Cassandra 执行的日志查询
- azure-devops - 如何以编程方式检测工作项更改类型 Azure Devops
- c - 位操作,ASCII 和二进制
- c# - 如何在 IoT Edge 模块中读取模块孪生?
- reactjs - DirectionsRenderer 用于作为道具的起点和终点
- docker - Docker container CPU usage exceeds 100% sometimes when streaming from "docker stats"
- c# - IOC in UnitTest class - Unity.WebApi
- javascript - How to make sure API calls completes before another page loads in React