如何将一个大文件夹的视频文件(约400 GB的篮球比赛影片)从一个帐户转移到另一个帐户?我不能只使用“更改所有权”工具,因为它是从帐户A(我的学校帐户)到帐户B(我的个人帐户)的。我可以使用Google导出工具,但是我认为我可以在不使用中间平台的情况下从一个Google云端硬盘转移到另一个帐户,而无需在中间使用另一个平台,并且需要完整下载内容并重新上传,这是不实际的许多大文件。
((在担心之前,所有这些数据都是I创建的数据,并负责;不是受版权保护/盗版的镜头。)
我相信您的情况和目标如下。
为此,这个答案怎么样?我认为使用Google Apps脚本可以实现您的目标。该示例脚本的流程如下。
请执行以下流程。
Web Apps的示例脚本是Google Apps脚本。因此,请创建一个Google Apps脚本项目。
如果要直接创建它,请访问https://script.new/。在这种情况下,如果您未登录Google,则会打开“登录”屏幕。因此,请登录到Google。这样,将打开Google Apps脚本的脚本编辑器。
在此答案中,使用了Google Apps脚本库。是BatchRequest。通过使用此库,可以使用异步过程完成文件复制。这样,与同步处理相比,可以降低处理成本。
关于安装库的方法,请检查here。
Please enable Drive API at Advanced Google services.这样,将在API控制台上自动启用Drive API。在此示例脚本中,使用了Drive API v3。
请复制并粘贴以下脚本。并将源文件夹ID设置为sourceFolderId
。您的情况是They are in several folders, nested inside of one main folder.
的顶层文件夹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
的特定文件夹。