如何调整Google Sheets筛选脚本以支持多工作表?
解决Google Apps Script多工作表筛选问题
以下是修改后的脚本,支持在任意激活的工作表中执行筛选和显示操作:
function onOpen() { SpreadsheetApp.getUi().createMenu("Custom Filter") .addItem("筛选行", "filterRows") .addItem("显示所有行", "showAllRows") .addToUi(); } function filterRows() { // 获取当前激活的工作表 var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); var data = sheet.getDataRange().getValues(); // 从第2行开始遍历(跳过表头) for(var i = 1; i < data.length; i++) { // 检查第11列(索引10)的复选框状态 if(data[i][10] === true) { sheet.hideRows(i + 1); } } } function showAllRows() { var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); sheet.showRows(1, sheet.getMaxRows()); }
修改说明
- 动态获取工作表:用
getActiveSheet()替代原来的getSheetByName("Warehouse_1"),脚本会自动识别当前用户正在查看的工作表,无需为每个仓库工作表单独编写重复代码。 - 解决菜单冲突:原脚本复制后函数名重复,导致菜单只会调用最后定义的函数。现在统一一套函数逻辑,所有工作表共用同一个菜单,点击时仅作用于当前激活表。
- 优化交互:将菜单项文字改为中文,操作更直观。
内容的提问来源于stack exchange,提问作者Vadim Kushkunov
相关产品推荐
相关产品推荐

