首页 > 解决方案 > 如何使用单元格的应用程序脚本将 Google 表格数据验证添加到列中,以仅允许输入颜色和十六进制颜色代码

问题描述

请参阅此处的电子表格图像示例:Google 表格单元格可能只允许输入“棕色”、“红色”、“绿色”等和十六进制颜色代码,例如 #03fca9。将如何使用整个专栏的应用程序脚本来解决这个问题?任何帮助将不胜感激!

标签: javascriptgoogle-apps-scriptgoogle-sheets

解决方案


您可以使用 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);

推荐阅读