如何点击B1复选框在Google Sheets中仅显示当日列并隐藏其余列?
Google Sheets脚本求助:点击复选框仅显示当日对应列
我是Google Sheets及编程新手,折腾好几天都没解决这个问题,求帮忙。需求是:点击B1单元格的复选框后,当前工作表只显示当天对应的列(比如7月12日显示A、B、L、M、N列),隐藏其他所有列。搜过类似方案反复改脚本,都没用。
工作表列布局参考:
示例表格可通过Google Sheets文档访问(文档ID:1sJD-JPLDi-kFkGq7p8BO5X51yXNKx8MfZaciH14jfn0,工作表gid=0)
解决方案
步骤1:编写触发脚本
- 打开目标Google Sheets,点击顶部菜单栏「扩展程序」→「Apps脚本」
- 删除编辑器里的默认代码,粘贴以下脚本:
function toggleDailyColumns() { const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); const checkbox = sheet.getRange("B1"); const isChecked = checkbox.isChecked(); // 取消勾选时恢复显示所有列 if (!isChecked) { sheet.showColumns(1, sheet.getLastColumn()); return; } // 获取今日日期(格式:月份/日期,如"7/12") const today = new Date(); const todayKey = `${today.getMonth() + 1}/${today.getDate()}`; // 配置各日期对应的显示列,按需修改 const dateColumnConfig = { "7/12": ["A", "B", "L", "M", "N"], // 可添加更多日期配置,示例: // "7/13": ["A", "B", "O", "P", "Q"] }; // 确定要显示的列,无匹配时默认显示A、B列 const targetColumns = dateColumnConfig[todayKey] || ["A", "B"]; // 先隐藏所有列 sheet.hideColumns(1, sheet.getLastColumn()); // 逐一显示指定列 targetColumns.forEach(col => { const colIndex = sheet.getRange(col + "1").getColumn(); sheet.showColumns(colIndex); }); }
- 点击编辑器顶部的保存按钮,给脚本命名(比如「DailyColumnToggle」)
步骤2:绑定复选框与脚本
- 返回工作表,右键点击B1单元格的复选框,选择「分配脚本」
- 输入
toggleDailyColumns(注意大小写完全一致),点击「确定」
注意事项
- 请根据你的实际需求,修改
dateColumnConfig中的日期和对应列配置 - 脚本首次运行时,会要求授权,按照提示完成授权即可
内容的提问来源于stack exchange,提问作者Joe
相关产品推荐
相关产品推荐

