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

如何用Google Apps Script批量列出多Drive文件夹文件并实现表单触发?

修改脚本实现多文件夹文件信息批量导出

假设你现有脚本包含单个文件夹文件遍历逻辑,以下是扩展后的完整脚本,可一次性处理"Thumbnails 1"至"Thumbnails 5"文件夹,共享表头且数据连续排列:

function exportMultipleFoldersToSheet() {
  // 目标文件夹名称列表
  const folderNames = ["Thumbnails 1", "Thumbnails 2", "Thumbnails 3", "Thumbnails 4", "Thumbnails 5"];
  // 替换为你的表格ID和目标工作表名称
  const sheetId = "你的Google Sheets文档ID";
  const sheetName = "指定工作表标签名称";
  const sheet = SpreadsheetApp.openById(sheetId).getSheetByName(sheetName);
  
  // 清空现有内容(如需保留历史数据可删除此行,改为从最后一行追加)
  sheet.clearContents();
  
  // 定义表头字段
  const headers = ["文件名", "文件ID", "访问链接", "创建时间", "最后修改时间", "大小(MB)", "所属文件夹"];
  // 写入表头到第一行
  sheet.getRange(1, 1, 1, headers.length).setValues([headers]);
  
  let nextRow = 2; // 从第二行开始写入文件数据
  
  // 遍历每个目标文件夹
  folderNames.forEach(folderName => {
    const folders = DriveApp.getFoldersByName(folderName);
    if (!folders.hasNext()) {
      console.log(`未找到文件夹:${folderName}`);
      return;
    }
    const targetFolder = folders.next();
    
    // 递归获取当前文件夹及子文件夹的所有文件
    const allFiles = getAllFilesInFolder(targetFolder);
    
    // 格式化文件数据,添加所属文件夹标识
    const formattedData = allFiles.map(file => [
      file.getName(),
      file.getId(),
      `https://drive.google.com/file/d/${file.getId()}/view`,
      file.getDateCreated(),
      file.getLastUpdated(),
      (file.getSize() / 1048576).toFixed(2),
      folderName
    ]);
    
    // 写入当前文件夹的文件数据
    if (formattedData.length > 0) {
      sheet.getRange(nextRow, 1, formattedData.length, formattedData[0].length).setValues(formattedData);
      nextRow += formattedData.length;
    }
  });
  
  SpreadsheetApp.getUi().alert("文件列表更新完成");
}

// 递归遍历文件夹及子文件夹,返回所有文件对象
function getAllFilesInFolder(folder) {
  let fileList = [];
  // 获取当前文件夹文件
  let files = folder.getFiles();
  while (files.hasNext()) {
    fileList.push(files.next());
  }
  // 递归处理子文件夹
  let subFolders = folder.getFolders();
  while (subFolders.hasNext()) {
    fileList = fileList.concat(getAllFilesInFolder(subFolders.next()));
  }
  return fileList;
}

关键修改点

  • 用数组folderNames批量定义目标文件夹,无需重复编写单文件夹处理逻辑
  • 统一写入表头,仅在表格第一行生成一次,后续数据自动追加在下方
  • 新增"所属文件夹"字段,方便区分不同来源的文件
  • 自动计算下一个写入行号,保证多文件夹数据连续排列

设置表单提交自动触发脚本

完全可以实现表单提交后自动更新文件列表,设置步骤如下:

  1. 打开Google Apps Script编辑器,点击左侧的触发器图标(时钟形状)
  2. 点击右下角添加触发器,配置以下选项:
    • 选择运行函数:exportMultipleFoldersToSheet
    • 部署类型:选择Head deployments(新脚本默认即可)
    • 事件源:选择从表单提交
    • 事件类型:选择表单提交
  3. 点击保存,按提示完成权限授权(需授予脚本Drive和Sheets的访问权限)

注意事项

  • 确保表单上传的文件确实存入目标文件夹,否则脚本无法抓取新文件
  • 若表单提交频率高,需留意Google Apps Script的配额限制(每日执行次数、单脚本运行时长等)
  • 可在脚本中添加异常捕获逻辑,比如用try-catch包裹核心代码并记录日志,方便排查问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 03:42:34