【发布时间】:2022-08-05 05:18:32
【问题描述】:
用例
例子。我有一个命名范围Apples(地址\"Sheet10!B2:B\"),用于对大量工作表单元格进行数据验证。 Apples 的数据范围可以更改(在脚本中),例如到\"Sheet10!D2:D\"。
它适用于 UI
我可以手动设置一个命名范围作为数据验证的数据源。
在这种情况下,单元格的数据验证将始终引用命名范围Apples 并更新数据范围。
如何在 Google Apps 脚本中制作它?
气体限制
如果您有 namedRange 对象,则用于设置数据验证的代码应如下所示:
mySheet.getRange(\'F5\')
.setDataValidation(
SpreadsheetApp.newDataValidation()
.requireValueInRange(
namedRange.getRange()
)
.setAllowInvalid(false)
.build()
);
DataValidationBuilder.requireValueInRange() 在这里不起作用,因为它只需要 class Range(它无法获得 NamedRange),并且不会使用对命名范围的引用。
有解决方法吗?
UPD1 - Spreadsheet.getRangeByName() 不起作用
通过名称获取范围没有帮助,数据验证将获得实际的范围地址。
SpreadsheetApp.getActive().getRangeByName(\"Apples\")
UPD2 到目前为止在 GAS 中没有办法做到这一点
正如@TheMaster 发布的那样,目前不可能。
请为帖子设置+1:
附言看起来唯一可行的解决方案是 Google Sheets API。
-
你可以试试这个api。或逆向工程师:设置命名范围并查看脚本中实际包含的 dv。
-
@TheMaster,是的,考虑过 API 方法。抱歉,没有收到
what dv it actually has in script。 dv 是什么意思? -
是的,找到了。我为此使用了一个宏。 @TheMaster,感谢逆向工程点,真的忘记了宏。 :D
-
伟大的。 Dv 只是数据验证
-
虽然我不确定我是否能正确理解您的目标,但我提出了一个使用 Sheets API 的示例脚本。你能确认一下吗?如果我误解了您的问题并且没有用,我深表歉意。
标签: google-apps-script google-sheets google-sheets-api