如何通过多个复选框控制Google Sheets隐藏多组对应列
问题原因
Google Apps Script 同一个项目内不允许定义多个同名函数。你重复创建多个onEdit简单触发器时,后定义的同名函数会直接覆盖之前的所有版本,所以永远只有最后写的那个onEdit逻辑会生效,前面的逻辑全部不会运行。
可用代码
把你项目里原来的所有onEdit脚本全部删掉,粘贴下面这一段代码即可:
function onEdit(e) { // 控制规则配置表,后续新增规则直接在这里加条目即可 const controlRules = { 'B5': {startCol: 8, colNum: 4}, // B5勾选后隐藏H列起共4列(H-K) 'B6': {startCol: 12, colNum: 4}, // B6勾选后隐藏L列起共4列(L-O) 'B7': {startCol: 16, colNum: 4} // B7勾选后隐藏P列起共4列(P-S) // 新增规则示例:要让B8控制T列起4列,就在上一行末尾加英文逗号,换行写 'B8': {startCol: 20, colNum: 4} }; const currentCell = e.range.getA1Notation(); const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); // 编辑的单元格不在配置规则里,直接退出不执行任何操作 if (!controlRules.hasOwnProperty(currentCell)) return; // 按复选框状态执行对应列的隐藏/显示 const rule = controlRules[currentCell]; e.value === "TRUE" ? sheet.hideColumns(rule.startCol, rule.colNum) : sheet.showColumns(rule.startCol, rule.colNum); }
扩展方法
- 列序号计算规则:A列对应1、B列对应2,按字母顺序依次累加,比如H列是8、L列是12、P列是16
- 新增控制规则不需要修改函数逻辑,只需要在
controlRules对象里按照现有格式新增对应条目即可 - 多个复选框同时勾选时,各自对应的列组会独立执行隐藏/显示逻辑,不会互相冲突
内容的提问来源于stack exchange,提问作者Brian
相关产品推荐
相关产品推荐

