validation - 尝试设置需要在输入中包含“#”的数据验证
问题描述
我正在尝试创建一个数据验证,它需要一个单元格有一个“#”,如果没有,将拒绝输入。我无法通过正常的数据验证来做到这一点,因为人们必须能够粘贴到单元格中,这通常会删除我设置的任何验证。我发现如果我在设定的范围内为数据验证编写脚本,即使将某些内容粘贴到单元格中,它仍然会运行。我已经足够标记不包含“#”的单元格,但无法弄清楚如何让它拒绝没有它的输入。这就是我所在的位置:
function NoHasgtag() {
var range = SpreadsheetApp.getActive().getRange("F7:F");
var validation = SpreadsheetApp.newDataValidation().requireTextContains("#").build();
range.setDataValidation(validation);
}
我还想我也许可以让它工作,.requireFormulaSatisfied()
并正在尝试这个:
function NoHasgtag() {
var range = SpreadsheetApp.getActive().getRange("F7:F");
var validation = SpreadsheetApp.newDataValidation().requireFormulaSatisfied('ISNUMBER(SEARCH("#",range,1)')');
range.setDataValidation(validation);
}
我得到了错误:
参数列表后缺少 )。(第 3 行,文件“代码”)
我正在即时学习所有这些,我不确定我在做什么,所以任何关于我哪里出错的帮助或解释都会非常有帮助!谢谢大家!
解决方案
您在代码中遇到的错误是:
var validation = SpreadsheetApp.newDataValidation().requireFormulaSatisfied('ISNUMBER(SEARCH("#",range,1)')');
应该改为:
var validation = SpreadsheetApp.newDataValidation().requireFormulaSatisfied('ISNUMBER(SEARCH("#",range,1))');
(注意删除的单引号)
此外,此代码将不起作用,因为:
公式无效。
将值粘贴到工作表后,将删除数据验证。
选择
您可以创建一个onEdit()
触发器来检查您的F7:F
范围是否已被修改。如果是这样,则创建新的数据验证。
由于您要验证的内容非常简单,因此您实际上并不需要自定义函数验证器。您可以简单地使用requireTextContains()
数据验证方法,如下所示:
function onEdit(e) {
var range = e.range;
var lastRow = range.getRow() + range.getHeight() - 1;
var firstCol = range.getColumn();
var lastCol = firstCol + range.getWidth() - 1;
if (range.getSheet().getName() == 'Sheet1' &&
lastRow > 6 &&
firstCol <= 6 &&
lastCol >= 6) {
var range = SpreadsheetApp.getActive().getRange("F7:F");
var validation = SpreadsheetApp.newDataValidation().requireTextContains('#').build();
range.setDataValidation(validation);
}
}
您只需要更改"Sheet1"
代码,使其与您要操作的工作表名称相匹配。
推荐阅读
- node.js - Node.js QueryString 模块的替代解决方案是什么
- android - 任务 ':app:processDebugMainManifest' 执行失败。> 清单合并失败并出现多个错误,请参阅日志
- python - 为什么没有正在运行的进程,却报错说“cuda out of memory”?
- windows - Github 自动添加 10,000 个系统文件到我的 github 更改中
- r - 有没有办法用数据框列中的 NULL 表达式替换“-”(包括括号“”)的字符值?
- python - python中有没有办法解压缩类似于javascript中的传播运算符的列表?
- python - 如何将符号 sympy ODE 系统转换为矩阵形式?
- python - 在python中旋转图像的最快方法是什么?
- .net - Chrome 未在 Gitlab 管道中使用 selenium 在 Windows Docker Image 中启动
- c# - WinForms:如何显示 Usb3 Vision 网络摄像头的输出