如何在独立脚本中通过openById获取所有工作表并批量操作
解决方案
1. 对所有工作表生效的实现
直接获取电子表格内所有工作表的数组,遍历执行目标操作:
function doSomethingForAllSheets(){ var ssID = "123abc"; var ss = SpreadsheetApp.openById(ssID); // 获取全部工作表的数组 var allSheets = ss.getSheets(); // 逐个处理每个工作表 allSheets.forEach(function(sheet) { var range = sheet.getRangeList(['A3:A','D3:D']); range.setFontFamily("Arial"); // 添加其他需要执行的操作 }); }
关键说明
- 用
ss.getSheets()替代原代码的getActiveSheet(),前者返回所有工作表的数组,后者仅获取当前激活的单个工作表 - 通过
forEach循环遍历数组,确保操作覆盖每一张表
2. 排除指定工作表的实现
定义需要跳过的工作表名称列表,遍历过程中过滤这些表:
function doSomethingExceptSheets(){ var ssID = "123abc"; var ss = SpreadsheetApp.openById(ssID); var allSheets = ss.getSheets(); // 自定义需要排除的工作表名称(按需修改) const excludedSheetNames = ["模板表", "历史归档"]; allSheets.forEach(function(sheet) { // 仅处理不在排除列表中的工作表 if (!excludedSheetNames.includes(sheet.getName())) { var range = sheet.getRangeList(['A3:A','D3:D']); range.setFontFamily("Arial"); // 添加其他需要执行的操作 } }); }
关键说明
sheet.getName()获取当前工作表的名称,用于和排除列表比对!excludedSheetNames.includes(...)判断逻辑:仅当工作表名称不在排除列表时,才执行后续操作- 可根据实际需求修改
excludedSheetNames数组内的名称
内容的提问来源于stack exchange,提问作者Jebra
相关产品推荐
相关产品推荐

