Google Sheets勾选单元格后锁定对应行并修改背景色实现咨询
投注提交自动锁定&改色实现方案
你可以通过 Google Sheets 自带的 Apps Script 触发器实现需求,操作步骤如下:
- 打开目标表格,点击顶部菜单栏「扩展程序」→「Apps Script」,进入脚本编辑页
- 清空编辑页默认生成的内容,粘贴以下代码:
function onEdit(e) { const activeSheet = e.source.getActiveSheet(); const editRange = e.range; // 仅响应F列的勾选操作 if (editRange.columnStart !== 6 || e.value !== "TRUE") return; // 定位勾选行的A-F列范围 const targetRow = editRange.rowStart; const targetRange = activeSheet.getRange(targetRow, 1, 1, 6); // 将范围背景色改为浅灰色,可自行调整色值 targetRange.setBackground("#d3d3d3"); // 锁定范围,仅表格所有者可编辑 const lock = targetRange.protect().setDescription("已提交投注,禁止修改"); const owner = Session.getEffectiveUser(); lock.addEditor(owner); lock.removeEditors(lock.getEditors()); if (lock.canDomainEdit()) { lock.setDomainEdit(false); } }
- 点击页面顶部的保存按钮,给项目设置一个任意名称,按照页面提示完成脚本授权即可(遇到未验证应用提示时,点击「高级」→「继续前往[项目名]」就能完成授权)
- 回到表格测试:勾选任意行F列的复选框,对应行A-F列会自动变为灰色,且除了你之外的协作者无法编辑该范围。
补充说明
- 如果只需要脚本对指定工作表生效,可以在代码的列判断逻辑后加一行
if (activeSheet.getName() !== "指定工作表名称") return;,替换双引号里的内容为你的工作表名即可 - 脚本仅对配置完成后新勾选的行生效,之前已经勾选的历史数据需要你手动重新勾选一次触发规则
- 如果你需要修改已锁定的内容,右键选中对应范围,选择「保护范围」→「移除保护」即可编辑
内容的提问来源于stack exchange,提问作者hirshg
相关产品推荐
相关产品推荐

