You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Appscript API获取Team Drive用户访问权限并生成报告?

获取Shared Drive(原Team Drive)用户访问权限报告的Apps Script方案

当然有对应的API可以实现这个需求!你可以借助Google Drive API的权限相关方法来提取Shared Drive中所有用户的访问权限信息,下面是具体的实现思路和实用代码:

一、先启用Drive API

在Apps Script编辑器中,需要先开启高级Google服务里的Drive API:

  • 打开你的Apps Script项目,点击左侧菜单栏的「服务」→「添加服务」
  • 找到「Drive API」并启用(建议选择v3版本)

二、核心API方法说明

你主要会用到两个关键方法:

  1. Drive.Drives.list():获取你有权访问的所有Shared Drive列表,必须添加supportsAllDrives: true参数才能正常读取Shared Drive数据。
  2. Drive.Permissions.list():针对单个Shared Drive,拉取其下所有权限条目,同样需要设置supportsAllDrives: true,还可以通过fields参数指定返回字段(比如permissions(id,emailAddress,role,type)),过滤冗余数据提升效率。

三、完整示例代码

下面是一段可直接运行的脚本,它会自动生成一份包含所有Shared Drive权限信息的Google Sheets报告:

function generateSharedDrivePermissionsReport() {
  // 创建新表格存储报告
  const spreadsheet = SpreadsheetApp.create("Shared Drive权限明细报告");
  const sheet = spreadsheet.getActiveSheet();
  // 写入表头
  sheet.appendRow(["Shared Drive名称", "用户邮箱", "权限角色", "权限类型"]);

  // 获取所有有权限的Shared Drive
  const drives = Drive.Drives.list({
    supportsAllDrives: true,
    fields: "drives(id,name)"
  }).drives;

  // 遍历每个Shared Drive提取权限
  drives.forEach(drive => {
    try {
      const permissions = Drive.Permissions.list(drive.id, {
        supportsAllDrives: true,
        fields: "permissions(emailAddress,role,type)",
        pageSize: 1000 // 单次最多拉取1000条,权限超量需分页处理
      }).permissions;

      // 将权限数据写入表格
      permissions.forEach(perm => {
        if (perm.emailAddress) { // 过滤无邮箱的权限(如域级权限)
          sheet.appendRow([
            drive.name,
            perm.emailAddress,
            perm.role,
            perm.type
          ]);
        }
      });
    } catch (e) {
      console.log(`获取${drive.name}权限失败: ${e.message}`);
      sheet.appendRow([drive.name, "获取失败", e.message, ""]);
    }
  });

  SpreadsheetApp.getUi().alert(`报告已生成,链接:${spreadsheet.getUrl()}`);
}

四、关键注意事项

  • 权限授权:运行脚本时需要授权,建议使用https://www.googleapis.com/auth/drive.readonly只读权限,避免请求不必要的高权限。
  • 分页处理:如果某个Shared Drive的权限条目超过1000条,需要添加pageToken参数实现循环分页拉取。
  • 权限角色解析:常见角色包括owner(所有者)、organizer(组织者)、writer(编辑者)、reader(查看者)等,可根据需求进一步细分展示。
  • 用户类型区分:通过perm.type可以识别用户类型,比如user是普通个人用户,group是群组,domain是域内用户。

内容的提问来源于stack exchange,提问作者Darpan Sanghavi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 04:15:24