提问人:Jos 提问时间:10/13/2023 最后编辑:Jos 更新时间:10/14/2023 访问量:53
使用 setValue() 更改脚本中的值时,Google 表格中的数据验证(大于数字)不起作用
Data Validation (Number greather than) in a Google Sheet is not working when changing the value in a script using setValue()
问:
在 google web 应用程序中,我更新了 google 工作表中的数据,我希望输入的数据遵循工作表的数据验证规则。
我使用谷歌脚本在谷歌表格单元格中设置了值。 数据验证(编号 > 10)适用于工作表的单元格,并在高级选项中选择“拒绝输入”。 如果我将工作表本身中的值更改为 2,则更新将被拒绝,因此数据验证 (NUMBER_GREATER_THAN) 正在工作!
如果我对带有下拉列表的单元格(Datavalidation VALUE_IN_LIST)执行相同的操作,则 javascript 中的更新将被拒绝,并且将引发异常。
奇怪的是,异常是在 getValue() 中抛出的,而不是在 setValue() 中抛出的,但我可以忍受。显然,数据验证是异步的。 我认为一周前NUMBER_GREATER_THAN的数据验证正在工作,但我无法弄清楚发生了什么变化或我改变了什么。
我的问题是我希望为 setValue(2) 抛出异常,因为值 2 不是有效数字,但它不再发生。当我为下拉列表设置无效字符串时,异常确实会启动。 有什么想法吗?
try {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var ws = ss.getSheetByName('Sheet2');
Logger.log("*** Number validation:");
cellRange = ws.getRange(2, 7);
cellRange.setValue(12); // Valid number
Logger.log('Cell-1 Before=[%s]);
cellRange.setValue(2); // Invalid number
Logger.log('Cell-1 updated!');
Logger.log('Cell-1 After=[%s]', cellRange.getValue()); // No exception!
Logger.log("*** Dropdown validation:");
cellRange = ws.getRange(2, 4);
cellRange.setValue('Option-2'); // Valid string
Logger.log('Cell-2 Before=[%s]);
cellRange.setValue('Option-4)'); // Invalid string
Logger.log('Cell-2 updated!'); // Not yet an exception
Logger.log('Cell-2 After=[%s]', cellRange.getValue()); // Exception for dropdown
} catch (err) {
Logger.log('Set Value Failed: ' +err);
}
控制台中的输出:
*** Number validation:
Cell-1 Before=[12.0]
Cell-1 updated!
Cell-1 After=[2.0]
*** Dropdown validation:
Cell-2 Before=[Option-2]
Cell-2 updated!
Set Value Failed: Exception: The data you entered in cell D4 violates the data validation rules set on this cell.
Use one of the following values: Option-1, Option-2, Option-3.
答: 暂无答案
评论
My problem is I want the exception to be thrown for the setValue(2) since value 2 is not a valid number but it is no longer happening.