gpt4 book ai didi

google-drive-api - 将大量 Google 云端硬盘文件传输到另一个云端硬盘帐户?

转载 作者:行者123 更新时间:2023-12-03 08:45:00 27 4
gpt4 key购买 nike

如何将一大文件夹的视频文件(约 400 GB 的篮球比赛影片)从一个帐户传输到另一个帐户?我不能只使用“更改所有权”工具,因为这是从帐户 A(我的学校帐户)到帐户 B(我的个人帐户)。我可以使用 Google Takeout 工具,但我不认为我可以从一个 Google Drive 转移到另一个帐户,而无需在中间使用另一个平台,并且需要完整下载内容并重新上传,这对于此来说是不切实际的许多大文件。

(在出现问题之前,所有这些数据都是我创建的数据,并且负责;不是受版权保护/盗版的镜头。)

最佳答案

我相信您的情况和目标如下。

  • 您有权复制源 Google 云端硬盘中的所有文件。
  • 文件放置在特定文件夹中,包括嵌套文件夹。
  • 您的 Google 云端硬盘(目标文件夹端)有足够的存储空间来复制所有文件。
  • 您想实现使用脚本复制所有文件。

对于这个,这个答案怎么样?我认为您的目标可以使用 Google Apps 脚本来实现。该示例脚本的流程如下。

  1. 从特定源文件夹(包括嵌套文件夹)检索所有文件 ID。
  2. 根据检索到的文件 ID 创建批量请求。
  3. 使用 Drive API 的 files.copy 方法和批量请求将文件复制到 Google 云端硬盘中的特定文件夹。

用法:

请执行以下流程。

1。创建 Google Apps 脚本的新项目。

Web Apps 的示例脚本是 Google Apps 脚本。因此,请创建一个 Google Apps 脚本项目。

如果您想直接创建,请访问https://script.new/ 。在这种情况下,如果您尚未登录 Google,则会打开登录屏幕。所以请登录谷歌。这样,Google Apps 脚本的脚本编辑器就会打开。

2。安装 Google Apps 脚本库。

在此答案中,使用了 Google Apps 脚本库。这是BatchRequest 。通过使用该库,可以通过异步过程完成文件复制。这样,与同步处理相比,可以稍微降低处理成本。

库的安装方法请查看here .

3。启用云端硬盘 API。

Please enable Drive API at Advanced Google services.这样,Drive API 就会在 API 控制台自动启用。在此示例脚本中,使用了 Drive API v3。

4。示例脚本。

请复制并粘贴以下脚本。并将源文件夹 ID 设置为 sourceFolderId。在您的情况下,顶级文件夹 ID 为它们位于多个文件夹中,嵌套在一个主文件夹内。。另外,请将目标文件夹 ID 设置为 destinationFolderId。在这种情况下,请在您的 Google 云端硬盘中设置文件夹 ID。

function myFunction() {
const sourceFolderId = "###"; // Please set the source folder ID.
const destinationFolderId = "###"; // Please set the destination folder ID.


const getFiles = (id, res = []) => {
const folder = DriveApp.getFolderById(id);
const files = folder.getFiles();
while (files.hasNext()) {
const file = files.next();
res.push({name: file.getName(), id: file.getId()})
}
let ids = [];
const folders = folder.getFolders();
while (folders.hasNext()) ids.push(folders.next().getId());
if (ids.length > 0) ids.forEach(id => getFiles(id, res));
return res;
}
const files = getFiles(sourceFolderId);
const limit = 100;
const split = Math.ceil(files.length / limit);
for (let i = 0; i < split; i++) {
const batches = files.splice(0, limit).map(f => ({
method: "POST",
endpoint: `https://www.googleapis.com/drive/v3/files/${f.id}/copy?supportsAllDrives=true`,
requestBody: {name: f.name, parents: [destinationFolderId]},
}));
const requests = {batchPath: "batch/drive/v3", requests: batches};
const result = BatchRequest.Do(requests);
console.log(result.getContentText());
}

// DriveApp.createFile() // This comment line is used for automatically detecting the scope of `https://www.googleapis.com/auth/drive` with the script editor. So please don't remove this line.
}
  • 当您在脚本编辑器中运行此函数时,将打开授权屏幕。所以请授权范围。这样,脚本就运行了。

注意:

  • 在这种情况下,所有文件都会复制到 destinationFolderId 的特定文件夹中。
  • 请在启用 V8 的情况下使用此脚本。
  • 如果您是源帐户的所有者,我认为如果可以将顶层文件夹的父文件夹直接更改为您帐户的目标文件夹,则过程成本将是最低的。但在我的环境中,我无法测试它。所以如果数据被删除了,那就是大问题了。所以我提出了复制所有文件的方法。

引用文献:

关于google-drive-api - 将大量 Google 云端硬盘文件传输到另一个云端硬盘帐户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61830648/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com