如何修改Google Sheets排序脚本,让LIST和TEMPLATE工作表留最前
工作表排序脚本修改方案
修改后的排序脚本
替换原有的onOpen和sortSheetsByName函数为以下代码:
function onOpen() { sortSheetsByName(); } function sortSheetsByName() { const ss = SpreadsheetApp.getActiveSpreadsheet(); const allSheets = ss.getSheets(); // 指定固定在最前端的工作表名称 const fixedSheetNames = ['LIST', 'TEMPLATE']; const fixedSheets = []; const sortableSheets = []; // 分离固定工作表和可排序工作表 allSheets.forEach(sheet => { const sheetName = sheet.getName(); if (fixedSheetNames.includes(sheetName)) { fixedSheets.push(sheet); } else { sortableSheets.push(sheet); } }); // 对可排序工作表按名称字母排序(不区分大小写) sortableSheets.sort((a, b) => { const nameA = a.getName().toLowerCase(); const nameB = b.getName().toLowerCase(); if (nameA < nameB) return -1; if (nameA > nameB) return 1; return 0; }); // 合并顺序:固定表在前,排序后的表在后 const orderedSheets = [...fixedSheets, ...sortableSheets]; // 调整工作表位置 orderedSheets.forEach((sheet, index) => { if (sheet.getIndex() !== index + 1) { ss.setActiveSheet(sheet); ss.moveActiveSheet(index + 1); } }); }
修改说明
- 固定工作表分组:通过
fixedSheetNames数组明确标记需要保留在最前端的工作表,避免排序时移动它们 - 分组处理逻辑:遍历所有工作表,将固定表和其他需要排序的表分开,确保固定表不参与排序
- 大小写兼容排序:排序时将工作表名称转为小写,避免因大小写差异导致排序结果不符合预期
- 顺序合并与位置调整:先放置固定表,再追加排序后的其他表,最后统一调整每个工作表的位置,确保顺序正确
原复制脚本无需修改
原有的TemplateDuplication函数可以保持原样,它的功能不受排序脚本修改的影响。
内容的提问来源于stack exchange,提问作者Anthony Fry
相关产品推荐
相关产品推荐

