如何通过Apps Script获取Google共享云端硬盘的文件权限列表?
问题描述
尝试获取Google共享云端硬盘中文件夹与文件的权限,目前仅能获取根共享云端硬盘的权限列表,但对其中任意文件或文件夹ID运行脚本时会报错。
相关信息
- 使用Google Workspace Business Plus订阅
- 本人是域超级管理员,有权访问该共享云端硬盘内的文件,且作为域管理员应拥有所有文件的访问权限
- 通过Apps Script网页IDE调用脚本,运行在本人授权范围内,本人是脚本所有者,脚本存储在个人云端硬盘中
脚本代码
function getPermissions_(driveFileID, sharedDriveSupport){ var thisDrivePermissions = Drive.Permissions.list( driveFileID, { useDomainAdminAccess: USE_DOMAIN_ADMIN_ACCESS, supportsAllDrives: sharedDriveSupport } ); return thisDrivePermissions; }
报错信息
GoogleJsonResponseException: API call to drive.permissions.list failed with error: Shared drive not found: xxxxxxxx
GoogleJsonResponseException: API call to drive.permissions.list failed with error: File not found:
解决方案
针对共享云端硬盘内文件/文件夹的权限获取问题,可通过以下调整修复:
确认参数传递准确性
- 调用
getPermissions_时,必须将sharedDriveSupport参数传入true,共享云端硬盘操作强制要求开启该支持选项。 - 检查
driveFileID是否为目标文件/文件夹的正确ID,避免混淆根共享盘ID与内部资源ID。
- 调用
补充共享盘ID参数
共享云端硬盘内的资源需要明确指定所在的共享盘ID,修改后的代码如下:function getPermissions_(driveFileID, sharedDriveID){ var thisDrivePermissions = Drive.Permissions.list( driveFileID, { useDomainAdminAccess: true, supportsAllDrives: true, driveId: sharedDriveID // 指定资源所属的共享云端硬盘ID } ); return thisDrivePermissions; }调用时需同时传入目标文件/文件夹ID,以及该资源所在的共享云端硬盘ID。
验证API权限配置
- 在Apps Script编辑器中,依次点击「扩展程序」→「Apps Script API」,确认API已启用。
- 检查脚本OAuth权限范围,确保包含
https://www.googleapis.com/auth/drive或https://www.googleapis.com/auth/drive.readonly(按需选择),权限不足时重新授权脚本。
处理权限继承场景
若需获取包含继承权限在内的所有有效权限,可在参数中添加includePermissionsForView: 'published',该参数仅对特定视图类型生效,需结合实际场景使用。
内容的提问来源于stack exchange,提问作者Mistic92
相关产品推荐
相关产品推荐

