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

如何通过复选框锁定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_

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 09:45:38