通过Google Apps Script将Google Drive父文件夹下的子文件夹名称写入Google Sheets
Drive子文件夹名称批量写入Sheets的改造实现
核心改造逻辑
现有代码仅完成了子文件夹的遍历、名称提取步骤,但没有对接Sheets的写入接口,所有提取的结果仅通过Logger日志输出,改造时不需要改动原有文件夹遍历的核心逻辑,只需要替换输出分支即可:
- 移除原有遍历流程中调用
Logger.log()的输出语句 - 新增绑定Sheets实例的获取逻辑,配置固定的写入起始位置
- 将遍历收集到的子文件夹名称整理为适配Sheets写入的二维数组格式,执行批量写入
- 补充基础的异常捕获、空结果提示逻辑,避免运行时无反馈
改造后的完整可运行代码
// 基础配置项,使用前替换为自己的参数 const PARENT_FOLDER_ID = "替换为Drive中目标父文件夹的ID"; const WRITE_START_ROW = 2; // 写入起始行,默认第2行,第1行预留写表头 const WRITE_START_COL = 1; // 写入起始列,默认A列 function syncSubFolderNamesToSheet() { // 获取当前绑定的Sheets活动工作表 const activeSheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); // 自动写入固定表头,避免重复 const headerCell = activeSheet.getRange(1, 1); if (headerCell.getValue() !== "子文件夹名称") { headerCell.setValue("子文件夹名称"); } try { // 定位目标父文件夹 const targetParentFolder = DriveApp.getFolderById(PARENT_FOLDER_ID); // 获取父文件夹下的所有子文件夹迭代器 const subFolderIterator = targetParentFolder.getFolders(); const folderNameCollection = []; // 遍历收集所有子文件夹名称 while (subFolderIterator.hasNext()) { const currentSubFolder = subFolderIterator.next(); // 按Sheets批量写入要求整理为二维数组格式 folderNameCollection.push([currentSubFolder.getName()]); } // 空结果判断 if (folderNameCollection.length === 0) { SpreadsheetApp.getUi().alert("指定的父文件夹下不存在任何子文件夹"); return; } // 定位要写入的单元格范围,一次性完成批量赋值 const targetWriteRange = activeSheet.getRange( WRITE_START_ROW, WRITE_START_COL, folderNameCollection.length, 1 ); targetWriteRange.setValues(folderNameCollection); // 运行完成弹窗提示 SpreadsheetApp.getUi().alert(`同步完成,共写入${folderNameCollection.length}条文件夹名称`); } catch (err) { SpreadsheetApp.getUi().alert(`运行异常:${err.message}`); } }
落地操作说明
- 打开你要存放整理结果的Google Sheets文件,通过顶部菜单栏的「扩展程序」入口打开Apps Script编辑器,将原有代码整体替换为上述改造后的代码
- 按注释提示,把配置项里的
PARENT_FOLDER_ID替换为你要遍历的Drive父文件夹实际ID(可从Drive文件夹的URL链接中提取) - 首次运行函数时,按照弹窗提示完成Drive、Sheets的访问授权即可
- 如果需要每次运行前清空之前的旧数据,可以在执行写入前增加清空逻辑:在
targetWriteRange.setValues(folderNameCollection)语句前,添加activeSheet.getRange(WRITE_START_ROW, WRITE_START_COL, activeSheet.getLastRow() - WRITE_START_ROW + 1, 1).clearContent() - 批量写入的方式比逐行调用单元格赋值的性能高90%以上,即使父文件夹下有数百个子文件夹也可以快速完成同步
内容的提问来源于stack exchange,提问作者karampuri sathish
相关产品推荐
相关产品推荐

