如何通过复选框锁定Google Sheets中带下拉列表的单元格
Google Sheets 勾选复选框锁定行实现方法
这个功能完全可以实现,不需要第三方工具,用自带的范围保护+Apps Script触发器即可完成,操作步骤如下:
- 先给H列添加复选框控件:选中整列H,点击顶部菜单栏「插入」→「复选框」,整列就会生成可点击勾选的复选框。
- 打开脚本编辑入口:点击顶部菜单栏「扩展程序」→「Apps 脚本」,会跳转到独立的脚本编辑页面。
- 清空脚本编辑器里默认的占位代码,粘贴下面的功能代码:
function onEdit(e) { const triggerRange = e.range; const activeSheet = triggerRange.getSheet(); // 仅处理指定工作表H列的编辑操作,下方'Sheet1'请替换为你自己的工作表名称 if (triggerRange.getColumn() === 8 && activeSheet.getName() === 'Sheet1') { const currentRow = triggerRange.getRow(); const targetLockRange = activeSheet.getRange(`A${currentRow}:G${currentRow}`); const allRangeProtections = activeSheet.getProtections(SpreadsheetApp.ProtectionType.RANGE); if (e.value === 'TRUE') { // 复选框勾选状态:给当前行A:G列加编辑锁 const newProtection = targetLockRange.protect().setDescription(`第${currentRow}行已锁定`); // 默认仅保留表格所有者编辑权限,如果要锁定后所有者也不能编辑,就把下面一行的注释符号删掉 // newProtection.removeEditors(newProtection.getEditors()); if (newProtection.canDomainEdit()) { newProtection.setDomainEdit(false); } } else { // 复选框取消勾选状态:删除当前行对应的保护规则,恢复编辑 allRangeProtections.forEach(protection => { const protectRange = protection.getRange(); if (protectRange.getRow() === currentRow && protectRange.getColumn() === 1 && protectRange.getNumColumns() === 7) { protection.remove(); } }) } } }
- 点击脚本编辑器顶部的保存按钮,给脚本项目随便起个名称(比如“行锁定脚本”),首次运行会弹出授权提示,按照页面提示选择高级选项、允许脚本操作你的表格即可,这是Google对自有脚本的常规安全校验,没有风险。
- 回到表格页面直接测试即可:勾选任意行H列的复选框,对应行A到G列会立刻被锁定无法编辑;取消勾选H列的复选框,对应行的编辑权限会立刻恢复。
注意事项:如果你的工作表名称不是默认的「Sheet1」,一定要把代码里的
'Sheet1'替换成你实际使用的工作表名称,否则脚本不会生效。
内容的提问来源于stack exchange,提问作者NM_
相关产品推荐
相关产品推荐

