如何修改Google Sheets脚本,实现基于命名范围复选框的onEdit触发?
修改代码适配命名范围触发触发器
原来的代码通过固定单元格位置判断编辑触发条件,要换成命名范围实现「移动复选框位置仍能触发」的需求,得按以下方式修改:
错误原因
你之前用e.range.getRangeByName('namedRange')报错,是因为getRangeByName是整个电子表格对象的方法,不是单个单元格范围(e.range)的方法,不能直接在e.range上调用。
正确修改后的代码
function installedOnEdit(e) { var sheet = e.range.getSheet(); var ss = sheet.getParent(); // 获取当前电子表格对象 var targetRange = ss.getRangeByName('namedRange'); // 通过命名范围获取目标复选框单元格 // 校验编辑的单元格是否是命名范围对应的单元格(同时匹配工作表和单元格位置) if (sheet.getName() === targetRange.getSheet().getName() && e.range.getA1Notation() === targetRange.getA1Notation()) { if (e.range.isChecked()) { // 复选框勾选时执行的逻辑 // do something } else { // 复选框取消勾选时执行的逻辑 // do something else } } }
关键说明
- 先通过
sheet.getParent()拿到整个电子表格对象,再调用getRangeByName获取命名范围对应的单元格 - 比较时同时校验工作表和单元格位置,避免不同工作表重名的命名范围干扰
- 后续移动复选框位置后,只要更新命名范围指向新单元格,代码就能正常触发
内容的提问来源于stack exchange,提问作者Serrot
相关产品推荐
相关产品推荐

