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

如何修改AppScript脚本:通过文件夹ID批量导入Google Sheets

修改Google Apps Script实现通过文件夹ID批量导入表格数据

需要修改的核心部分:

  1. 替换手动ID列表为文件夹ID
    删掉原脚本里的get_IDs数组,改成定义一个folderId变量,填入存储目标表格的文件夹ID。
  2. 新增获取文件夹内表格文件的逻辑
    使用DriveApp服务获取指定文件夹下的所有Google Sheets格式文件,自动收集文件ID,不用手动逐个添加。
  3. 调整循环逻辑
    把原来遍历ID数组的循环,改成遍历文件夹里的表格文件,同时增加容错判断(比如跳过没有"Billing card"工作表的文件)。

修改后的完整脚本:

function getData() {
  // 替换成你的目标文件夹ID
  const folderId = "你的文件夹ID";
  const targetSheetName = "Billing card";

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var copySheet = ss.getSheetByName(targetSheetName);
  copySheet.getRange('A2:Z').clear();

  let pasteRow = 1;
  const folder = DriveApp.getFolderById(folderId);
  const files = folder.getFilesByType(MimeType.GOOGLE_SHEETS);

  while (files.hasNext()) {
    const file = files.next();
    try {
      var ss1 = SpreadsheetApp.openById(file.getId());
      var sourceSheet = ss1.getSheetByName(targetSheetName);
      
      // 跳过没有目标工作表的文件
      if (!sourceSheet) continue;
      
      var sheetsRange = sourceSheet.getDataRange();
      var sheetsValues = sheetsRange.getValues();

      // 移除前5行表头(保留原逻辑)
      sheetsValues.splice(0, 5);

      if (sheetsValues.length === 0) continue; // 跳过空数据
      
      copySheet.getRange(pasteRow + 1, 1, sheetsValues.length, sheetsValues[0].length).setValues(sheetsValues);
      pasteRow += sheetsValues.length;
    } catch (e) {
      // 捕获异常,避免单个文件出错导致整个脚本终止
      console.log(`处理文件 ${file.getName()} 时出错: ${e.message}`);
    }
  }
}

关键修改说明:

  • 用DriveApp.getFolderById(folderId)获取目标文件夹,再通过getFilesByType(MimeType.GOOGLE_SHEETS)筛选出所有Google表格文件,自动批量获取文件ID,不用手动维护ID列表。
  • 增加了try-catch异常处理,就算某个文件打不开或者没有指定工作表,脚本也能继续处理其他文件。
  • 保留了原脚本中移除前5行、追加数据到目标工作表的核心逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 10:30:50