javascript - 如何使用单元格的应用程序脚本将 Google 表格数据验证添加到列中,以仅允许输入颜色和十六进制颜色代码
问题描述
请参阅此处的电子表格图像示例:Google 表格单元格可能只允许输入“棕色”、“红色”、“绿色”等和十六进制颜色代码,例如 #03fca9。将如何使用整个专栏的应用程序脚本来解决这个问题?任何帮助将不胜感激!
解决方案
您可以使用 Apps 脚本进行验证,但您不必这样做。突出显示目标范围,选择“数据验证”->“自定义公式是”并输入以下公式:
=REGEXMATCH(A1,"([#0-9a-fA-F]){6}|green|red|blue|purple")
验证将基于公式计算结果是否为 TRUE。我不是 REGEX 方面的专家,所以可能有更好的选择来编写这个表达式。例如,我的表达式不会拒绝空格等。缺点是您必须手动列出所有颜色别名。此外,该表达式仅根据模式测试用户输入 - 无法检查输入是否为有效颜色。
在代码中,您可以通过调用 DataValidationBuilder 类的此方法来构建规则并将其应用于范围
var range = SpreadsheetApp.getActive().getRange('A1:A');
var rule = SpreadsheetApp.newDataValidation().requireFormulaSatisfied('=REGEXMATCH(A1,"([#0-9a-fA-F]){6}|green|red|blue|purple")').build();
range.setDataValidation(rule);
推荐阅读
- node.js - 使用 npm i 安装 pcf 脚本时出错
- android - 已读和未读消息功能
- java - apache log4j 没有获取属性文件
- h2 - H2 数据库:异步文件协议使用安全吗?
- postgresql - PGBouncer 没有重用连接,而是不断创建新的数据库连接,直到用完
- python - 查找乘积等于目标数的所有对
- sql-server - 如何将 .pyd 文件格式上传到 Microsoft SQL 机器学习服务器
- java - 使用 SpringUtilities 和 SpringLayout 无法将另一个组件(JPanel)添加到 JFrame
- rabbitmq - RabbitMQ 使用 IIS 跺反向代理
- c++ - 在 C++ 中定义 boost 库无锁队列时出现声明错误