You need to enable JavaScript to run this app. 通过Google Apps Script将Google Drive父文件夹下的子文件夹名称写入Google Sheets
优惠活动
大模型
产品
解决方案
定价
更多

通过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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.23 04:45:02