如何用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批量定义目标文件夹,无需重复编写单文件夹处理逻辑 - 统一写入表头,仅在表格第一行生成一次,后续数据自动追加在下方
- 新增"所属文件夹"字段,方便区分不同来源的文件
- 自动计算下一个写入行号,保证多文件夹数据连续排列
设置表单提交自动触发脚本
完全可以实现表单提交后自动更新文件列表,设置步骤如下:
- 打开Google Apps Script编辑器,点击左侧的触发器图标(时钟形状)
- 点击右下角添加触发器,配置以下选项:
- 选择运行函数:
exportMultipleFoldersToSheet - 部署类型:选择Head deployments(新脚本默认即可)
- 事件源:选择从表单提交
- 事件类型:选择表单提交
- 选择运行函数:
- 点击保存,按提示完成权限授权(需授予脚本Drive和Sheets的访问权限)
注意事项
- 确保表单上传的文件确实存入目标文件夹,否则脚本无法抓取新文件
- 若表单提交频率高,需留意Google Apps Script的配额限制(每日执行次数、单脚本运行时长等)
- 可在脚本中添加异常捕获逻辑,比如用
try-catch包裹核心代码并记录日志,方便排查问题
内容的提问来源于stack exchange,提问作者Victor Enrich
相关产品推荐
相关产品推荐

