如何使用Google Apps脚本(GAS)创建多个驱动器文件夹

问题描述 投票:0回答:1

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

问题1:将循环与DriveApp.createFolderref一起使用可以完成工作,但是执行时间很长。我已经进行了一些测量,创建1个文件夹大约需要0.8s,即100个文件夹需要80s!这不切实际。

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个回答
0
投票

我相信您的目标如下。

  • 您想使用Google Apps脚本创建multipe文件夹。
  • 您要为此减少处理成本。

为此,这个答案如何?

修改点:

我的回答是一种解决方法,我建议针对您的情况使用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 < 10大于100,该脚本也会通过拆分每100个请求来工作。

注意:

  • 请将此脚本与V8一起使用。

参考:

© www.soinside.com 2019 - 2024. All rights reserved.