You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

修改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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 08:36:08