如何通过Google Script基于复选框值隐藏表格列并批量显隐
Google Sheets 列自动隐藏+一键显隐实现方案
1. 勾选复选框自动隐藏对应列
通过onEdit简单触发器实现,编辑单元格时自动判断触发条件,无需手动操作:
function onEdit(e) { const currentSheet = e.range.getSheet(); // 替换为你自己的工作表名称,避免其他表误触发功能 if (currentSheet.getName() !== "生产计划表") return; const triggerRow = 5; const startCol = 13; // M列对应的列号,A列计数为1 const editRow = e.range.rowStart; const editCol = e.range.columnStart; // 仅响应第5行、M列及以后的复选框编辑操作 if (editRow !== triggerRow || editCol < startCol) return; // 勾选(值为TRUE)时隐藏列,取消勾选则显示列 e.value === "TRUE" ? currentSheet.hideColumns(editCol) : currentSheet.showColumns(editCol); }
脚本保存后该功能自动生效,不需要额外绑定操作。
2. 一键显隐自定义功能
两个独立函数,可绑定到表格按钮实现快速操作:
一键显示所有M列及以后的隐藏列
function showAllColumns() { const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("生产计划表"); const lastCol = sheet.getLastColumn(); const startCol = 13; // 遍历M列到最后一列,全部设置为显示 for (let col = startCol; col <= lastCol; col++) { sheet.showColumns(col); } SpreadsheetApp.getUi().alert("所有列已显示,可开始编辑内容"); }
一键按复选框状态重新隐藏列
修改完内容后点击执行,会自动把第5行已勾选的列重新隐藏:
function reHideCheckedColumns() { const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("生产计划表"); const lastCol = sheet.getLastColumn(); const startCol = 13; // 批量获取第5行所有复选框状态,减少API调用提升运行速度 const checkStatus = sheet.getRange(5, startCol, 1, lastCol - startCol + 1).getValues()[0]; checkStatus.forEach((isChecked, offset) => { const currentCol = startCol + offset; isChecked ? sheet.hideColumns(currentCol) : sheet.showColumns(currentCol); }); SpreadsheetApp.getUi().alert("已按勾选状态更新列显隐"); }
3. 部署操作步骤
- 打开目标表格,点击顶部菜单栏「扩展程序」→「Apps Script」打开脚本编辑器
- 删除编辑器内默认的空白代码,把上面三段代码全部粘贴进去,把代码中所有
"生产计划表"替换为你实际使用的工作表名称 - 点击顶部保存按钮,给脚本项目任意命名(比如“生产计划表工具”),保存后关闭脚本编辑器回到表格即可
- (可选绑定按钮)点击顶部「插入」→「绘图」,绘制两个按钮图形分别标注“显示所有列”“重新隐藏勾选列”,插入表格后右键点击按钮,选择「指定脚本」,分别填入对应的函数名
showAllColumns、reHideCheckedColumns确认即可,后续点击按钮就能直接触发对应功能
注意:第一次点击自定义按钮时会弹出Google账号授权提示,按流程完成授权即可,所有逻辑仅在你的个人表格空间内运行,不会外传数据。

内容的提问来源于stack exchange,提问作者Vadim Kushkunov
相关产品推荐
相关产品推荐

