Google Sheets选中Completed后如何禁用下拉锁定单元格禁止编辑
Google Sheets C列选中Completed后自动锁定单元格方案
这个需求可以通过表格原生的Google Apps Script实现,不需要第三方工具,触发无延迟,完全匹配「选完Completed立刻移除下拉、禁止后续修改」的要求。
实现逻辑
- 用表格自带的
onEdit简单触发器实时监听C列的编辑动作 - 检测到单元格值被改为
Completed时,首先清除该单元格绑定的下拉数据验证规则,再给单元格添加保护配置,移除所有普通用户的编辑权限 - 保护规则默认仅对表格所有者开放编辑权限,避免管理员后续无法调整内容
操作步骤
- 打开目标表格,点击顶部菜单栏「扩展程序」→「Apps Script」,打开脚本编辑器
- 清空编辑器内默认的冗余代码,粘贴以下代码:
function onEdit(e) { // 可根据实际表格调整配置 const TARGET_COL = 3; // C列对应列号为3,A=1、B=2以此类推 const LOCKED_STATUS = "Completed"; const currentRange = e.range; const activeSheet = currentRange.getSheet(); // 过滤无效触发:非C列、同时编辑多单元格的情况不执行逻辑 if ( currentRange.columnStart !== TARGET_COL || currentRange.getNumRows() > 1 || currentRange.getNumColumns() > 1 ) return; // 检测到选中Completed时执行锁定 if (e.value?.trim() === LOCKED_STATUS) { // 移除单元格下拉菜单 currentRange.setDataValidation(null); // 添加单元格保护 const cellProtection = currentRange.protect().setDescription('完成状态自动锁定'); // 移除所有普通编辑者的权限 cellProtection.removeEditors(cellProtection.getEditors()); // 兜底关闭域编辑权限,避免组织内用户绕过限制 if (cellProtection.canDomainEdit()) { cellProtection.setDomainEdit(false); } } }
- 点击编辑器顶部的保存按钮,给项目任意命名(比如「完成状态锁定」)即可完成部署
授权与使用说明
- 第一次触发脚本时会弹出Google官方的授权提示,按提示点击「高级」→「前往(你的项目名)」完成授权即可,整个授权流程是Google官方标准流程,不存在数据安全问题
- 授权完成后,任何用户在C列单元格选中
Completed的瞬间,该单元格的下拉菜单会立刻消失,且普通编辑用户无法再修改该单元格内容 - 如果后续管理员需要调整已锁定的单元格,直接用表格所有者账号操作即可,也可以在表格「数据」→「保护的工作表和范围」里手动删除对应保护规则
常见问题排查
- 脚本不生效:首先确认是否完成了脚本授权,其次检查是否同时选中了多个单元格编辑(当前脚本仅对单个单元格编辑生效),同时确认表格没有给匿名用户开放编辑权限,否则保护规则会失效
- 下拉菜单未消失:检查代码中
TARGET_COL配置是否和你的下拉列匹配,确认没有其他批量设置的数据验证规则覆盖目标单元格 - 普通用户仍可修改已锁定单元格:打开「保护的工作表和范围」面板,检查对应保护规则是否正确移除了所有非所有者的编辑权限
内容的提问来源于stack exchange,提问作者Asif Sheikh
相关产品推荐
相关产品推荐

