如何修改Google Sheets脚本实现自定义菜单同时隐藏/显示两列?
修改后的Google Apps Script代码
以下是调整后的脚本,支持单次操作隐藏/显示两列:
/** @OnlyCurrentDoc */ function onOpen() { var ui = SpreadsheetApp.getUi(); ui.createMenu('Show Next Season') .addItem('Hide Columns', 'hideCol') .addItem("Show Columns", 'show') .addToUi(); } function hideCol() { const sheet = SpreadsheetApp.getActive().getSheetByName('Season by Season'); const startCol = 20; // 对应表格中的T列 const maxCol = sheet.getMaxColumns() - 4; // 保留原脚本的列范围限制 // 从起始列开始查找第一个未隐藏的列 for (let col = startCol; col <= maxCol; col++) { if (!sheet.isColumnHiddenByUser(col)) { // 计算要隐藏的列数(最多2列,不超出最大列限制) const colsToHide = Math.min(2, maxCol - col + 1); sheet.hideColumns(col, colsToHide); break; } } } function show() { const sheet = SpreadsheetApp.getActive().getSheetByName('Season by Season'); const startCol = 20; // 对应表格中的T列 const maxCol = sheet.getMaxColumns() - 4; // 保留原脚本的列范围限制 // 从起始列开始查找第一个隐藏的列 for (let col = startCol; col <= maxCol; col++) { if (sheet.isColumnHiddenByUser(col)) { // 计算要显示的列数(最多2列,不超出最大列限制) const colsToShow = Math.min(2, maxCol - col + 1); sheet.showColumns(col, colsToShow); break; } } }
关键修改说明
- 替换原脚本单次处理一列的逻辑,改为每次处理最多2列(若剩余可操作列不足2列,则处理剩余全部)
- 使用
hideColumns(col, numColumns)和showColumns(col, numColumns)方法,一次性操作多列,提升效率 - 保留原脚本的列范围限制(从第20列开始,到
maxColumns-4列结束) - 每次操作从第一个未隐藏/隐藏的列开始,连续处理两列,符合按年份顺序隐藏/显示的需求
内容的提问来源于stack exchange,提问作者user21652920
相关产品推荐
相关产品推荐

