You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 23:09:23