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

如何将多个Google Docs中的表格数据批量导入Google Spreadsheet?

批量导入Google Docs表格到Google Spreadsheet解决方案

前置操作

  • 将所有待处理的Google Docs文档集中放到同一个Google Drive文件夹中
  • 新建一个空白Google Spreadsheet作为数据汇总的目标表格

基于Google Apps Script的实现步骤

  1. 打开目标Google Spreadsheet,点击顶部菜单「扩展程序」→「Apps Script」进入脚本编辑器
  2. 删除默认的Code.gs内容,替换为以下代码:
function importDocsTablesToSheet() {
  // 替换为你的目标Drive文件夹ID
  const FOLDER_ID = "你的文件夹ID";
  // 替换为目标Spreadsheet的工作表名称(默认为Sheet1)
  const TARGET_SHEET_NAME = "Sheet1";
  
  const folder = DriveApp.getFolderById(FOLDER_ID);
  const files = folder.getFilesByType(MimeType.GOOGLE_DOCS);
  const targetSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(TARGET_SHEET_NAME);
  
  let isFirstDoc = true;
  const particularsKey = "Particulars"; // 固定列名
  
  while (files.hasNext()) {
    const doc = DocumentApp.openById(files.next().getId());
    const tables = doc.getBody().getTables();
    
    // 跳过无表格的文档
    if (tables.length === 0) continue;
    
    // 取文档内第一个表格(若有多个可调整逻辑)
    const table = tables[0];
    const rowCount = table.getNumRows();
    const colCount = table.getNumColumns();
    
    // 提取表头,建立列名与索引的映射
    const headerRow = table.getRow(0);
    const columnMap = {};
    for (let col = 0; col < colCount; col++) {
      const headerText = headerRow.getCell(col).getText().trim();
      columnMap[headerText] = col;
    }
    
    // 验证是否包含Particulars列
    if (!columnMap[particularsKey]) {
      console.log(`文档 ${doc.getName()} 缺少Particulars列,已跳过`);
      continue;
    }
    
    // 提取数据行
    const data = [];
    for (let row = 1; row < rowCount; row++) {
      const tableRow = table.getRow(row);
      const rowData = [];
      // 按表头顺序整理数据(确保与目标Sheet列对齐)
      Object.keys(columnMap).forEach(colName => {
        const cellText = tableRow.getCell(columnMap[colName]).getText().trim();
        rowData.push(cellText);
      });
      data.push(rowData);
    }
    
    // 写入目标Sheet:表头仅写入一次,后续追加数据
    if (isFirstDoc) {
      targetSheet.clear(); // 清空目标表原有内容
      targetSheet.appendRow(Object.keys(columnMap)); // 写入表头
      isFirstDoc = false;
    }
    if (data.length > 0) {
      targetSheet.getRange(targetSheet.getLastRow() + 1, 1, data.length, colCount).setValues(data);
    }
    
    console.log(`已导入文档:${doc.getName()}`);
  }
  
  SpreadsheetApp.getUi().alert("所有符合条件的文档表格数据已导入完成");
}
  1. 代码配置说明

    • 找到目标Drive文件夹的ID:打开文件夹,地址栏中folders/后的字符串即为文件夹ID,替换代码中的"你的文件夹ID"
    • 若目标工作表不是默认的Sheet1,修改TARGET_SHEET_NAME为实际工作表名称
  2. 运行与授权

    • 点击脚本编辑器顶部的「运行」按钮,首次运行会触发权限验证,按照提示选择「高级」→「前往XX脚本(不安全)」完成授权
    • 授权完成后再次运行脚本,等待执行完成

问题排查提示

  • 若脚本报错提示权限不足:检查是否在授权时允许了脚本访问Google Drive和Spreadsheet的权限
  • 若部分文档数据未导入:查看脚本编辑器的「日志」(点击「查看」→「日志」),确认是否因缺少Particulars列或无表格被跳过
  • 若数据列对齐错误:确保所有Docs表格的表头名称完全一致(注意大小写和空格)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 14:18:23