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

如何设置规则防止共享考勤表中已勾选的复选框被取消勾选?

实现共享工作表复选框勾选后无法取消的功能

核心思路

通过工作表内置脚本的onEdit触发器监听单元格编辑事件,当检测到复选框从「未勾选」变为「勾选」状态时,立即锁定该单元格的编辑权限,彻底阻止用户取消勾选操作。

完整脚本代码

function onEdit(e) {
  const range = e.range;
  const sheet = range.getSheet();
  
  // 替换为你的考勤表名称,限定脚本仅在目标工作表生效
  if (sheet.getName() !== "考勤表") return;
  
  // 验证当前单元格是复选框类型
  const dataValidation = range.getDataValidation();
  if (!dataValidation || dataValidation.getType() !== SpreadsheetApp.DataValidation.Type.CHECKBOX) return;
  
  // 仅处理「未勾选→勾选」的操作
  if (e.oldValue === "FALSE" && e.value === "TRUE") {
    // 创建单元格保护规则
    const protection = range.protect().setDescription("已打卡锁定");
    // 移除所有普通编辑者的权限(仅所有者可编辑,可按需调整)
    const editors = protection.getEditors();
    protection.removeEditors(editors);
    
    // (可选)添加管理员邮箱,允许特定人员修改锁定的单元格
    // protection.addEditors(["admin@yourdomain.com"]);
  }
}

部署与测试步骤

  1. 打开你的共享考勤工作表,点击顶部菜单栏「扩展程序」→「Apps 脚本」
  2. 删除编辑器中的默认代码,粘贴上述脚本,修改sheet.getName() !== "考勤表"中的表名为你的实际工作表名称
  3. 点击脚本编辑器顶部的「保存」按钮,给项目命名(比如「考勤锁定工具」)
  4. 关闭脚本编辑器,回到工作表:勾选任意复选框,尝试取消勾选时会发现单元格已被锁定,无法修改

注意事项

  • 首次使用脚本时,可能需要手动运行一次onEdit函数,按提示完成授权(仅需一次)
  • 管理员可通过「数据」→「保护工作表和范围」管理已锁定的单元格,处理异常考勤情况
  • 如果需要对已存在的勾选状态复选框批量设置保护,可新增一个一次性执行的批量处理函数

内容的提问来源于stack exchange,提问作者Wilderness Adventure

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 00:52:37