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

如何在Google Sheets中用动态查询自动导入指定表格的所有工作表数据

解决方案:Google Sheets自动导入指定表格全部工作表数据

原生IMPORTRANGE函数本身不支持自动识别源表格内的新增工作表,你可以搭配Google Apps Script实现需求,无需每天手动修改查询规则。


实现思路

  • 通过Apps Script自动拉取源表格的所有工作表名称
  • 自动拼接所有工作表的数据,合并后写入目标汇总表,或生成动态查询公式
  • 搭配定时触发器实现自动更新,新增工作表无需调整任何配置

方案1:脚本静态同步(适合大数据量场景,稳定性高)

操作步骤

  1. 打开你的目标汇总表格,点击顶部菜单栏「扩展程序」-「Apps Script」打开脚本编辑器
  2. 删除编辑器内默认的空代码,粘贴如下代码:
// 按需修改下方三个参数即可
const SOURCE_SPREADSHEET_ID = "替换为源表格ID(从源表格URL中提取)";
const HEADER_ROW_COUNT = 1; // 源表表头占几行就填几行,默认1行
const TARGET_SHEET_NAME = "汇总表"; // 数据写入目标表格的哪个工作表

function autoImportAllSheets() {
  // 获取源表格所有工作表
  const sourceSs = SpreadsheetApp.openById(SOURCE_SPREADSHEET_ID);
  const allSourceSheets = sourceSs.getSheets();
  let mergedData = [];
  
  allSourceSheets.forEach(sheet => {
    // 如果有不需要汇总的工作表,可在此处添加跳过逻辑,示例:if(sheet.getName() === "测试表") return;
    const sheetData = sheet.getDataRange().getValues();
    // 仅第一个表保留表头,其余表跳过表头行
    if(mergedData.length === 0) {
      mergedData = mergedData.concat(sheetData);
    } else {
      mergedData = mergedData.concat(sheetData.slice(HEADER_ROW_COUNT));
    }
  })
  
  // 写入目标表
  const targetSs = SpreadsheetApp.getActiveSpreadsheet();
  const targetSheet = targetSs.getSheetByName(TARGET_SHEET_NAME) || targetSs.insertSheet(TARGET_SHEET_NAME);
  targetSheet.clearContents();
  targetSheet.getRange(1, 1, mergedData.length, mergedData[0].length).setValues(mergedData);
}
  1. 修改代码开头的三个自定义参数,保存项目并自定义项目名
  2. 首次运行需要授权,按提示操作即可(提示未验证应用属于正常情况,点击「高级」-「继续访问」即可,脚本为你自行编写无安全风险)
  3. 如需自动更新无需手动运行:点击脚本编辑器左侧「触发器」按钮,添加触发器,选择autoImportAllSheets函数,触发类型选「时间驱动」,可按需设置按天/按小时/分钟级别的更新频率

方案2:自定义函数+公式动态同步(适合小数据量场景,无需配置触发器)

如果数据量在1000行以内,你可以用轻量的自定义函数+公式实现:

  1. 打开Apps Script,粘贴如下自定义函数代码:
function GET_ALL_SHEET_NAMES(spreadsheetId) {
  const ss = SpreadsheetApp.openById(spreadsheetId);
  return ss.getSheets().map(sheet => sheet.getName());
}
  1. 保存授权后,在目标表的任意单元格输入如下公式即可:
=QUERY(REDUCE(,GET_ALL_SHEET_NAMES("替换为源表格ID"),LAMBDA(acc,cur,{acc;IMPORTRANGE("替换为源表格ID",cur&"!A:Z")})),"WHERE Col1 IS NOT NULL",1)

该公式会自动获取所有工作表名称、拼接多表数据、自动过滤空行、保留1行表头,新增工作表后刷新表格即可自动导入新数据。


注意事项

  • 脚本运行的Google账号需要拥有源表格的查看/编辑权限
  • 如需排除特定工作表不参与汇总,在方案1的跳过逻辑处添加对应表名判断即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 08:09:01