在 AppScripts API 参考中,添加文件夹权限有两个设置:addEditor(emailAddress) 和 addViewer(emailaddress)。无论如何,我们可以使用 AppScripts 在文件夹上添加“内容管理器”权限吗?
Google Apps 脚本有两种使用 Google 云端硬盘的方式:
DriveApp
类,具有友好的 API,用于执行大多数驱动器功能。Drive
。注意:截至今天,Google 只允许您在 Google Apps 脚本中使用此 API 的 v2,而不是最新版本的 v3。请务必参阅 Drive API 的 v2 文档 - 与下面使用的权限调用存在差异。如您所知,DriveApp 不提供共享云端硬盘的全套权限。您可以添加一些权限,例如编辑器:
DriveApp.getFolderById(sharedFolderId).addEditor(email);
要访问所有共享云端硬盘权限,您需要激活完整(“高级”)Google Drive API 并使用
Drive.Permissions.insert
。如前所述,此代码适用于 API v2:
Drive.Permissions.insert({ // This method name is "insert" in v3
'role': 'fileOrganizer', // Displayed in the UI as "Content Manager"
'type': 'user',
'value': email, // This field name is "emailAddress" in v3
}, sharedFolderId, {
'supportsAllDrives': true, // Must be true for shared drives
});
将权限映射到 UI 中的显示方式:
additionalRoles
评论者:评论者Google Drive API 有一个通用方法可以向组授予权限,请参阅
setSharing(accessType, permissionType)
:
// Creates a folder that anyone on the Internet can read from and write to. (Domain
// administrators can prohibit this setting for users of a Google Workspace domain.)
var folder = DriveApp.createFolder('Shared Folder');
folder.setSharing(DriveApp.Access.ANYONE, DriveApp.Permission.EDIT);
权限包括编辑、查看、整理等...
参考资料:
@jtatum 你的帖子特别有帮助!我使用 Drive API V3 完成了我的工作。对于那些不明白这意味着什么的人,请单击链接并配置您的设置,然后再查看下面的示例:
Drive.Permission API 函数的快速细分,有关 API 构造的完整列表,请访问 Google API 主页。对于此示例,我们将有:
两个变量
两种配置
function setContentManagerPermission(){
var resourceid = "XYCDEFEGH12323" //This can be a file id or folder id
var emailaddress = "[email protected]"
var resource = {
'role': 'fileOrganizer', // Grants Content Manager permissions.
'type': 'user',
'emailAddress': emailaddress
}; //THIS IS A JSON STATEMENT
//NOTE: resource must be passed in first
Drive.Permissions.create(resource,resourceid,{
'sendNotificationEmails': false,
'supportsAllDrives': true
});
}
请注意,资源变量必须为 json 格式。我发现使用 JSON 作为变量更容易格式化。您不必使用此变量。 varialbe 支持包含 json 的本机调用。
此外,Drive.Permissions.Insert 在 V3 中已替换为 驱动器.权限.创建。他们也在更新和删除
在驱动器权限下,您必须将supportsAllDrives 设置为true 为了使用共享驱动器。没有它,这将无法工作。
我希望这有帮助,它已经过测试并且效果很好。