我想使用谷歌应用程序脚本为谷歌表格中的单元格创建数据验证,但我找不到创建验证自定义公式的语法。
我的想法是创建一个代码来验证时间格式 HH:MM。对于这个问题,我已经有一个可用的正则表达式(函数 CheckRegexp)
到目前为止,我找到的关于此问题的唯一文档是:https://developers.google.com/apps-script/reference/spreadsheet/data-validation-criteria
function test() {
var sheet = SpreadsheetApp.getActiveSheet();
var cell = sheet.getRange("E4");
var criteria = SpreadsheetApp.DataValidationCriteria.CUSTOM_FORMULA
//Custom formula CheckRegexp
var dv = SpreadsheetApp.newDataValidation().withCriteria(criteria, args).build();
cell.setDataValidation(dv);
}
function CheckRegexp(input) {
return /^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$/.test(input);
}
我希望结果是我的正则表达式在所需范围内的数据验证。
另一种数据验证方法如下:
=AND(ISDATE(E4), TEXT(E4, "hh:mm")=TO_TEXT(E4))
REGEXMATCH 函数也适用,但对于某些人来说可能可读性较差。 顺便说一句,这两种情况都不会拒绝错误的数字输入(我不知道为什么)。他们仅将单元格标记为“无效:此单元格的内容违反其验证规则”。
为时已晚,但可能会帮助仍在寻找它的人。以下是如何通过脚本设置自定义公式验证:
var range = SpreadsheetApp.getActive().getRange("A2");
var criteria = SpreadsheetApp.DataValidationCriteria.CUSTOM_FORMULA;
var args = ["=ISNUMBER(A2)"];
var val = SpreadsheetApp.newDataValidation().withCriteria(criteria,args);
val.setAllowInvalid(false);
val.setHelpText("Please enter valid number.");
range.setDataValidation(val);