修改Google Sheets多标签合并脚本 支持跳过多个指定工作表
修改后的多表合并脚本(支持自定义跳过工作表)
修改说明
- 新增可配置的跳过工作表列表,你可以根据需求自行添加不需要参与合并的工作表名称,主表已默认包含在跳过列表中,无需重复添加
- 保留原脚本按列名匹配、无视列位置的核心功能,原有运行逻辑不变
- 额外新增空表兼容判断,避免无数据的工作表导致脚本报错
使用方法
找到脚本开头配置区开始和配置区结束之间的EXCLUDED_SHEETS数组,按照示例格式填入你需要跳过的工作表名称即可,示例:
需要跳过名为「模板」「归档」的工作表时,配置项修改为:const EXCLUDED_SHEETS = [MASTER_SHEET_NAME, "模板", "归档"];
完整代码
function combineData() { // ========== 配置区开始 ========== // 主工作表名称,不需要修改的话保持默认即可 const MASTER_SHEET_NAME = "Master"; // 需要跳过不参与合并的工作表列表,可自行添加/删除,主表已默认包含无需重复加 const EXCLUDED_SHEETS = [MASTER_SHEET_NAME, "示例跳过表1", "示例跳过表2"]; // ========== 配置区结束 ========== const ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(MASTER_SHEET_NAME); const lc = ss.getLastColumn(); const lr = ss.getLastRow() > 1 ? ss.getLastRow() : 2; ss.getRange(2, 1, lr-1, lc).clearContent(); const labels = ss.getRange(1, 1, 1, lc).getValues()[0]; labels.forEach(function(label,i){ const colValues = getCombinedColumnValues(label, EXCLUDED_SHEETS); ss.getRange(2, i+1, colValues.length, 1).setValues(colValues); }) } function getCombinedColumnValues(label, excludedSheets) { const sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets(); let colValues = []; for (const [i, sheet] of Object.entries(sheets)) { const sheetName = sheet.getSheetName(); // 检查当前工作表是否在跳过列表中,不在的话才读取数据 if(!excludedSheets.includes(sheetName)) { const tempValues = getColumnValues(label,sheetName); colValues = colValues.concat(tempValues); } } return colValues; } function getColumnValues(label,sheetName) { const ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName); const colIndex = getColumnIndex(label,sheetName); const numRows = ss.getLastRow() - 1; if (numRows < 1) return []; const colValues = ss.getRange(2, colIndex, numRows, 1).getValues(); return colValues; } function getColumnIndex(label,sheetName) { const ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName); const lc = ss.getLastColumn(); const lookupRangeValues = ss.getRange(1, 1, 1, lc).getValues()[0]; const index = lookupRangeValues.indexOf(label) + 1; return index; }
内容的提问来源于stack exchange,提问作者axis9011
相关产品推荐
相关产品推荐

