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

如何用Google App Script拉取并合并Google表格多标签页数据

问题1:使用Google App Script从多个标签页拉取数据

以下是通用的拉取数据脚本,可指定目标标签页,提取指定区域的数据:

function pullDataFromSheets() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  // 替换为你需要拉取数据的标签页名称数组
  const targetSheetNames = ['7/10/2023', '7/17/2023', '7/24/2023'];
  let allData = [];

  targetSheetNames.forEach(sheetName => {
    const sheet = ss.getSheetByName(sheetName);
    if (!sheet) return; // 跳过不存在的标签页
    
    // 提取A2:C1002区域的数据,可根据需求修改范围
    const rawData = sheet.getRange('A2:C1002').getValues();
    // 过滤全空行(可选,避免无效数据)
    const filteredData = rawData.filter(row => row.some(cell => cell !== ''));
    allData = allData.concat(filteredData);
  });

  // 可将拉取到的数据写入指定标签页,或在控制台查看
  console.log('拉取到的总数据:', allData);
  
  // 示例:写入到"数据汇总"标签页
  // const summarySheet = ss.getSheetByName('数据汇总');
  // if (summarySheet) {
  //   summarySheet.getRange(2, 1, allData.length, allData[0].length).setValues(allData);
  // }
}

代码说明

  • 首先获取当前活动表格实例,指定要拉取的标签页名称数组;
  • 遍历每个目标标签页,提取指定区域的数据并过滤空行;
  • 最终可将合并后的数据输出到控制台,或写入指定的汇总标签页。

问题2:自动合并日期命名的标签页数据

针对每周新增日期命名标签页的场景,以下脚本可自动识别日期格式的标签页,合并指定区域数据到主表,并支持自动定时执行:

function mergeDateSheetsToMain() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const mainSheetName = '主表'; // 替换为你的主标签页名称
  let mainSheet = ss.getSheetByName(mainSheetName);

  // 若主表不存在则创建,并写入表头(从第一个有效日期表复制)
  if (!mainSheet) {
    mainSheet = ss.insertSheet(mainSheetName);
    const firstDateSheet = ss.getSheets().find(sheet => isDateSheetName(sheet.getName()));
    if (firstDateSheet) {
      const header = firstDateSheet.getRange('A1:C1').getValues()[0];
      mainSheet.getRange(1, 1, 1, header.length).setValues([header]);
    }
  }

  // 清空主表原有数据(保留表头)
  const lastRow = mainSheet.getLastRow();
  if (lastRow > 1) {
    mainSheet.getRange(2, 1, lastRow - 1, 3).clearContent();
  }

  let mergedData = [];
  // 遍历所有标签页,筛选日期格式的页面
  ss.getSheets().forEach(sheet => {
    const sheetName = sheet.getName();
    // 跳过主表和非日期格式的标签页
    if (sheetName === mainSheetName || !isDateSheetName(sheetName)) return;

    // 提取A2:C1002区域的数据
    const rawData = sheet.getRange('A2:C1002').getValues();
    const filteredData = rawData.filter(row => row.some(cell => cell !== ''));
    mergedData = mergedData.concat(filteredData);
  });

  // 将合并数据写入主表
  if (mergedData.length > 0) {
    mainSheet.getRange(2, 1, mergedData.length, mergedData[0].length).setValues(mergedData);
  }
}

// 辅助函数:验证标签页名称是否为MM/DD/YYYY格式的有效日期
function isDateSheetName(sheetName) {
  const datePattern = /^\d{1,2}\/\d{1,2}\/\d{4}$/;
  if (!datePattern.test(sheetName)) return false;
  
  const [month, day, year] = sheetName.split('/').map(Number);
  const date = new Date(year, month - 1, day);
  return date instanceof Date && !isNaN(date);
}

额外设置:自动每周一执行

  1. 打开脚本编辑器,点击左侧菜单栏的「触发器」图标;
  2. 点击「添加触发器」,配置参数:
    • 选择函数:mergeDateSheetsToMain
    • 事件源:「时间驱动」
    • 类型:「周计时器」
    • 星期:「周一」
    • 设置合适的执行时间

这样每周一新增日期标签页后,脚本会自动执行合并操作,无需手动修改公式。


内容的提问来源于stack exchange,提问作者TheBox

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 20:33:20