Google Drive API能否为共享盘新用户分配Content Manager权限
共享盘内容管理员权限授予实现方案
问题说明
使用Google App Script自动为域名下新建账号分配共享盘权限时,内置DriveApp服务提供的addEditor()方法仅能授予编辑者(Editor)权限,无法直接授予共享盘专属的内容管理员(Content Manager)角色,可通过调用Drive API v3原生接口实现该需求。
原有实现代码如下:
switch(ssValues[i][9]){ case "Accounting": AdminDirectory.Members.insert(groupMember, "notourcompany"); DriveApp.getFolderById("TH1SDR!v3").addEditor(email); break;
实现步骤
- 打开Apps Script编辑器,在左侧服务栏点击「添加服务」,选择Drive API,版本选择v3后确认添加
- 替换原有
addEditor()的调用逻辑,直接调用Drive API v3的Permissions创建接口,注意共享盘场景下角色和参数的特殊配置:- 共享盘角色和API枚举值对应关系:
fileOrganizer:内容管理员(即目标权限)organizer:共享盘管理员writer:编辑者commenter:评论者reader:查看者
- 操作共享盘资源时必须传入
supportsAllDrives: true参数,否则接口无法识别共享盘ID,会返回404错误
修改后的可运行代码如下:
- 共享盘角色和API枚举值对应关系:
switch(ssValues[i][9]){ case "Accounting": AdminDirectory.Members.insert(groupMember, "notourcompany"); // 构造权限参数 const drivePermission = { type: 'user', role: 'fileOrganizer', emailAddress: email }; // 调用接口授予内容管理员权限 Drive.Permissions.create( drivePermission, "TH1SDR!v3", // 传入共享盘ID {supportsAllDrives: true} // 必传参数,支持共享盘操作 ); break;
注意:执行该操作的账号需要拥有对应共享盘的管理员权限,否则接口会返回权限不足错误。如果后续需要调整为其他共享盘角色,仅需修改
role字段对应的枚举值即可,无需调整其他逻辑。
内容的提问来源于stack exchange,提问作者RankinJ
相关产品推荐
相关产品推荐

