基于条件锁定Google Sheets单元格/区域的Apps Script实现需求
实现Google Sheets单元格变色自动锁定功能
以下是完整的Apps Script代码,可实现当单元格填充色改为红色时自动锁定,仅指定用户可编辑:
function onEdit(e) { // 获取触发编辑的单元格 const editedCell = e.range; const sheet = editedCell.getSheet(); // 定义红色的十六进制颜色码(可根据实际使用的红色调整) const targetColor = "#ff0000"; // 检查当前单元格背景色是否为目标红色 if (editedCell.getBackground() === targetColor) { // 创建该单元格的保护规则 const protection = editedCell.protect().setDescription("已锁定(红色填充)"); // 移除所有默认编辑者(包括全员编辑权限) const editors = protection.getEditors(); protection.removeEditors(editors); // 添加允许编辑的指定用户(替换为实际邮箱,多个用户用逗号分隔) const allowedUsers = ["user1@company.com", "user2@company.com"]; protection.addEditors(allowedUsers); // 设置仅指定用户能修改保护规则 protection.setDomainEdit(false); protection.setWarningOnly(false); // 可选:添加单元格备注提示 editedCell.setNote("该单元格已锁定,仅指定管理员可编辑"); } }
代码说明
onEdit(e):Google Sheets内置的简单触发器,每次单元格被编辑时自动执行targetColor:可根据实际使用的红色调整十六进制码(比如浅红为#ffcccc)protection:创建单元格保护对象,先移除所有原有编辑者,再添加指定权限用户setWarningOnly(false):设置为强制锁定,而非仅弹出警告
设置步骤
- 打开目标Google Sheets表格
- 点击顶部菜单栏「扩展程序」→「Apps Script」
- 删除默认的
myFunction代码,粘贴上述完整代码 - 修改
allowedUsers数组中的邮箱为公司指定的可编辑用户邮箱 - 点击脚本编辑器顶部「保存」按钮,给脚本命名(比如「CellLockOnColor」)
- 返回表格测试:编辑任意单元格并设置填充色为红色,该单元格会自动锁定
解锁方法
指定用户如需解锁单元格:
- 右键已锁定单元格,选择「保护范围」
- 在右侧面板点击「删除」移除保护,或添加其他编辑者
- 如需取消红色填充并解锁,需先移除保护再修改单元格颜色
内容的提问来源于stack exchange,提问作者Roman R
相关产品推荐
相关产品推荐

