如何查找Google Workspace Shared Drives中共享给外部用户的文件和文件夹
原生搜索限制说明
Google Drive原生的to:xxx、sharedwith:xxx搜索语法仅适用于「我的云端硬盘」场景,在共享盘场景下确实无法对外部用户生效,这是现有产品的既定设计限制,无法通过调整搜索参数绕过。
可行操作方案
方案1:管理员权限报表查询(适合组织管理员批量排查)
- 打开Google Workspace管理后台,进入「报表」→「审计」→「云端硬盘」分类
- 添加筛选条件:操作类型为「共享设置已更改」、共享对象域名≠你所在组织的主域名,范围指定为目标共享盘
- 导出报表即可获得该共享盘下所有给外部用户共享的文件、文件夹记录,也可直接填入特定外部用户邮箱定向拉取其所有有权限的资源列表
方案2:Apps Script批量扫描(普通用户可操作,仅需共享盘管理权限)
你可以自行运行简单的Apps Script脚本遍历共享盘内所有资源的权限,筛选出外部用户,核心逻辑如下:
- 提取目标共享盘ID:打开共享盘根目录,URL中
drive/folders/后的字符串即为盘ID - 在Google Apps Script编辑器中启用Drive高级服务,运行以下核心代码即可将结果输出到Google Sheet中:
// 替换参数为你的共享盘ID、组织内部域名 function getExternalSharesFromSharedDrive(sharedDriveId = '替换为共享盘ID', internalDomain = '替换为你的组织域名.com') { const result = [['文件名', '文件链接', '外部用户邮箱', '权限等级']]; // 遍历共享盘所有文件 const files = Drive.Files.list({ corpora: 'drive', driveId: sharedDriveId, includeItemsFromAllDrives: true, supportsAllDrives: true, fields: 'files(id, name, permissions)', pageSize: 1000 }).files; // 筛选外部用户权限 files.forEach(file => { if (!file.permissions) return; file.permissions.forEach(perm => { if (perm.type === 'user' && !perm.emailAddress.endsWith(internalDomain)) { result.push([ file.name, `https://drive.google.com/file/d/${file.id}`, perm.emailAddress, perm.role ]); } }); }); // 写入到当前关联的Google Sheet const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); sheet.clear().getRange(1, 1, result.length, result[0].length).setValues(result); }
注意:该方法仅能扫描你拥有至少查看权限的共享盘资源,若你没有对应资源的管理权限则无法读取其权限列表。
方案3:轻量查询替代方案(无需代码,适合查询单个特定用户)
如果仅需要查询某一个外部用户在共享盘内的权限,你可以直接尝试给该用户授予共享盘根目录的访问权限,系统会自动弹出提示「该用户已拥有X个文件/文件夹的访问权限」,点击提示中的链接即可直接查看所有该用户有权限的资源列表,无需遍历全盘。
内容的提问来源于stack exchange,提问作者Steve Venton
相关产品推荐
相关产品推荐

