【问题标题】:How to Create Multiple Drive Folder using Google Apps Script (GAS)如何使用 Google Apps 脚本 (GAS) 创建多个驱动器文件夹
【发布时间】:2025-12-29 19:55:11
【问题描述】:

目标: 使用 GAS 创建多个文件夹 (~100)。

问题 1: 使用带有DriveApp.createFolder ref 的循环可以完成这项工作,但执行需要很长时间。我做了一些测量,创建 1 个文件夹大约需要 0.8 秒,即 100 个文件夹需要 80 秒! 这不切实际。

for(let i=0;i<10;i++){
  let folderID = DriveApp.createFolder('myfolder'+i.toString());
  Logger.log(folderID);
}

问题 2: 使用Advanced Drive Service 可能可以完成这项工作,但我不知道如何批量运行Drive.Files.insert()。感谢Tanaike's tutorial,我只设法创建了一个文件夹。下面的示例代码

function CreateFolder() {
  let fileMetadata = {
    'title': 'myDriveService',
    'mimeType': 'application/vnd.google-apps.folder',
    'parents': [{
      'id': '{parent_folder_ID}'
    }]
  };

  let respond = Drive.Files.insert(fileMetadata);
  Logger.log(respond);
}

【问题讨论】:

    标签: google-apps-script google-drive-api


    【解决方案1】:

    我相信你的目标如下。

    • 您想使用 Google Apps 脚本创建多个文件夹。
    • 您希望为此降低流程成本。

    对于这个,这个答案怎么样?

    修改点:

    在我的回答中,作为一种解决方法,我想针对您的情况建议使用the batch request。批量请求以异步进程运行,一次 API 调用可运行 100 个请求。由此,认为可以降低处理成本。在这里,为了将批处理请求与简单脚本一起使用,使用了 Google Apps 脚本库。

    文件夹是通过 Drive API v3 中的 files.create 方法创建的。

    用法:

    1。安装 Google Apps 脚本库。

    要使用此示例脚本,请安装 BatchRequest 的 Google Apps 脚本库。安装库的方法可以在https://github.com/tanaikech/BatchRequest#how-to-install查看。

    2。运行示例脚本。

    请复制并粘贴以下脚本。还有please enable Drive API at Advanced Google services

    function myFunction() {
      let batchReqs = [];
      for (let i = 0; i < 10; i++) {
        batchReqs.push({
          method: "POST",
          endpoint: "https://www.googleapis.com/drive/v3/files",
          requestBody: {name: 'myfolder'+i.toString(), mimeType: MimeType.FOLDER}
        });
      }
    
      // Run batch requests using the library.
      const limit = 100;
      const split = Math.ceil(batchReqs.length / limit);
      let folderIds = [];
      for (let i = 0; i < split; i++) {
        const res = BatchRequest.Do({batchPath: "batch/drive/v3", requests: batchReqs.splice(0, limit)});
        const ids = res.getContentText().match(/{[\s\S]+?}/g).map(function(e) {return JSON.parse(e).id});
        folderIds = folderIds.concat(ids);
      }
      console.log(folderIds)
    }
    
    • 当你运行myFunction的函数时,在这种情况下,根文件夹下会创建10个文件夹。
    • 在此示例脚本中,即使 for 循环的 i &lt; 10 超过 100 个,脚本也会通过每 100 个请求拆分一次来工作。

    注意:

    • 请将此脚本用于 V8。

    参考资料:

    【讨论】: