使用 Apps 脚本在 Google 个共享云端硬盘(团队云端硬盘)文件夹之间移动文件
File movement between Google Shared Drive (team drive) folders using Apps Script
我正在为共享驱动器(团队驱动器)创建一个工作流程,其中我在团队驱动器下有 3 个文件夹:
待批准
已批准
已拒绝
我正在发送 TO BE APPROVED 文件夹中的文档以供批准,如果用户批准,则该文档应移至 APPROVED 文件夹。 REJECTED 的逻辑相同。
现在我的问题是如何在共享驱动器文件夹之间移动文档。 DriveApp.getFolderById(folderId).addFile()
无法正常工作,因为我不能在 Team Drive 中拥有超过一位家长。 DriveApp.getFolderById(folderId).createFile()
正在运行,但它正在创建一个具有新 ID 的全新文件,这不符合我批准工作流的目的,因为这是一个全新的文件。
有没有什么方法可以移动文件或copy/replace任何不会改变我的文件 ID 的操作?我也尝试了 REST API,但找不到。
好的,看来我通过 REST 找到了答案 API 我可以更新文件的父项。我已经打了那个电话,它正在工作。
这是示例。
var apiUrl = "https://www.googleapis.com/drive/v3/files/fileId?addParents=newFolderId&removeParents=oldFolderId&supportsTeamDrives=true";
var token = ScriptApp.getOAuthToken();
var header = {"Authorization":"Bearer " + token};
var options = {
"method":"PATCH",
"headers": header
};
var res = UrlFetchApp.fetch(apiUrl, options);
更新
使用 Advance Services API 我们可以达到同样的效果,这是我从 Aliaksei Ivaneichyk
那里得到的答案
function moveFileToFolder(fileId, newFolderId) {
var file = Drive.Files.get(fileId, {supportsTeamDrives: true});
Drive.Files.patch(file, fileId, {
removeParents: file.parents.map(function(f) { return f.id; }),
addParents: [newFolderId],
supportsTeamDrives: true
});
}
这里如果使用Appscript,需要开启Drive SDK advance services。如果是 Appmaker,请在设置选项中将 Drive SDK 添加为服务。
我正在为共享驱动器(团队驱动器)创建一个工作流程,其中我在团队驱动器下有 3 个文件夹:
待批准
已批准
已拒绝
我正在发送 TO BE APPROVED 文件夹中的文档以供批准,如果用户批准,则该文档应移至 APPROVED 文件夹。 REJECTED 的逻辑相同。
现在我的问题是如何在共享驱动器文件夹之间移动文档。 DriveApp.getFolderById(folderId).addFile()
无法正常工作,因为我不能在 Team Drive 中拥有超过一位家长。 DriveApp.getFolderById(folderId).createFile()
正在运行,但它正在创建一个具有新 ID 的全新文件,这不符合我批准工作流的目的,因为这是一个全新的文件。
有没有什么方法可以移动文件或copy/replace任何不会改变我的文件 ID 的操作?我也尝试了 REST API,但找不到。
好的,看来我通过 REST 找到了答案 API 我可以更新文件的父项。我已经打了那个电话,它正在工作。
这是示例。
var apiUrl = "https://www.googleapis.com/drive/v3/files/fileId?addParents=newFolderId&removeParents=oldFolderId&supportsTeamDrives=true";
var token = ScriptApp.getOAuthToken();
var header = {"Authorization":"Bearer " + token};
var options = {
"method":"PATCH",
"headers": header
};
var res = UrlFetchApp.fetch(apiUrl, options);
更新 使用 Advance Services API 我们可以达到同样的效果,这是我从 Aliaksei Ivaneichyk
那里得到的答案function moveFileToFolder(fileId, newFolderId) {
var file = Drive.Files.get(fileId, {supportsTeamDrives: true});
Drive.Files.patch(file, fileId, {
removeParents: file.parents.map(function(f) { return f.id; }),
addParents: [newFolderId],
supportsTeamDrives: true
});
}
这里如果使用Appscript,需要开启Drive SDK advance services。如果是 Appmaker,请在设置选项中将 Drive SDK 添加为服务。