Google Apps Script如何无需手动罗列即可适配全部工作表执行排序
优化方案
你可以通过遍历全部工作表的方式替换硬编码的工作表名,不需要每次新增月份表都修改代码,分两种适配场景:
所有工作表都需要排序
如果你的表格内不存在不需要执行排序的特殊工作表,直接用以下代码即可:
function autoSort() { var ss = SpreadsheetApp.getActiveSpreadsheet() // 获取当前表格的全部工作表 var allSheets = ss.getSheets() // 遍历每个工作表执行排序逻辑 allSheets.forEach(function(ws) { // 工作表行数不足3行时跳过,避免参数报错 if(ws.getLastRow() < 3) return var sortRange = ws.getRange(3, 1, ws.getLastRow() - 2, 6) sortRange.sort({column: 6, ascending: true}) }) }
存在不需要排序的特殊工作表
如果表格内有汇总表、说明表等不需要执行排序的工作表,可以加一层名称规则校验,只对符合月份命名的表执行逻辑:
function autoSort() { var ss = SpreadsheetApp.getActiveSpreadsheet() // 可根据你的命名规则修改月份列表,中文月份直接替换数组内容即可 var monthList = ["January","February","March","April","May","June","July","August","September","October","November","December"] var allSheets = ss.getSheets() allSheets.forEach(function(ws) { // 仅匹配名称在月份列表内的工作表 if(!monthList.includes(ws.getSheetName())) return if(ws.getLastRow() < 3) return var sortRange = ws.getRange(3, 1, ws.getLastRow() - 2, 6) sortRange.sort({column: 6, ascending: true}) }) }
两种方案都支持后续新增工作表自动适配,无需手动修改代码。
内容的提问来源于stack exchange,提问作者frustrat3disko
相关产品推荐
相关产品推荐

