求Google Sheets可自定义配对的复选框模拟单选按钮互斥脚本
Google Sheets 成对复选框模拟单选互斥脚本
实现效果
- 每组绑定的2个复选框单元格同一时间最多只能勾选1个,勾选其中任意一个时,同组另一个会自动切换为未勾选状态,true/false状态完全互斥
- 配置逻辑完全和核心代码解耦:新增互斥配对只需要在配置区新增一行,直接填写配对单元格的A1格式位置(如A8、D9)即可生效,不需要写代码
- 后续调整复选框位置、移除不需要的互斥组时,只需要修改、删除对应配置行即可,完全不需要改动脚本核心逻辑
部署步骤
- 打开需要添加功能的Google表格,点击顶部菜单栏「扩展程序」→「Apps 脚本」,打开在线脚本编辑器
- 清空编辑器里默认生成的空函数内容,粘贴下方提供的完整脚本代码
- 修改脚本开头配置区的参数,填写你需要的互斥单元格配对、对应工作表名称
- 点击编辑器顶部的保存按钮,按照弹窗提示给脚本授予必要权限,返回表格即可正常使用
完整脚本代码
// ====================== 配置区 仅修改此区域内容即可 ====================== // 互斥配对配置:每一行代表一组互斥的两个复选框,格式为["单元格1位置", "单元格2位置"] // 新增配对直接复制一行按格式填写即可,删除配对直接删掉对应行 const MUTEX_CHECKBOX_PAIRS = [ ["A2", "B2"], // 示例:A2与B2复选框互斥 ["A8", "D9"], // 示例:A8与D9复选框互斥 // 在此处继续添加你的配对配置 ] // 需要生效的工作表名称,必须和表格底部的工作表标签名完全一致 const ACTIVE_SHEET_NAME = "工作表1" // 若需要禁止同组两个复选框都为空(即必须选一个),把下面参数改为true即可 const FORCE_SELECT_ONE = false // ====================== 配置区结束 请勿修改下方代码 ====================== function onEdit(e) { if (!e) return; const currentRange = e.range; const currentSheet = currentRange.getSheet(); if (currentSheet.getName() !== ACTIVE_SHEET_NAME) return; const editedCell = currentRange.getA1Notation(); const editedValue = e.value; for (const pair of MUTEX_CHECKBOX_PAIRS) { const [cellA, cellB] = pair; if (editedCell !== cellA && editedCell !== cellB) continue; if (editedValue === "TRUE") { const targetCell = editedCell === cellA ? cellB : cellA; currentSheet.getRange(targetCell).setValue(false); } if (FORCE_SELECT_ONE && (editedValue === "FALSE" || editedValue === undefined)) { const targetCell = editedCell === cellA ? cellB : cellA; currentSheet.getRange(targetCell).setValue(true); } } }
配置说明
- 新增互斥组:在
MUTEX_CHECKBOX_PAIRS数组中新增一行,按示例格式填入两个单元格的A1位置即可,比如新增["C3", "E5"]就代表C3和E5两个复选框互斥 - 调整已有配对:直接修改对应配置行里的单元格位置,保存后立即生效
- 移除配对:直接删除对应的配置行,不会影响其他配对的正常运行
- 强制二选一:把
FORCE_SELECT_ONE参数的值改为true后,同组两个复选框永远会保持一个选中的状态,取消勾选其中一个时会自动勾选另一个,完全模拟传统单选按钮的行为
注意事项
- 脚本使用Google Sheets内置的简单触发器
onEdit运行,不需要手动触发,编辑单元格时会自动执行,响应无延迟 - 首次部署时的授权弹窗是Google官方安全流程,脚本不会上传任何表格数据,所有逻辑都在你自己的表格账号下运行
- 配置单元格位置时请确保对应单元格已经提前插入了复选框,否则脚本不会生效
内容的提问来源于stack exchange,提问作者John Deacon
相关产品推荐
相关产品推荐

