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

通过Google Apps Script调用API 如何区分Google Drive用户显式与继承权限

Google Drive权限来源判断方案(Google Apps Script实现)

可以实现权限来源区分,核心依赖Google Drive API v3的permissionDetails字段,无需额外依赖第三方工具。

实现逻辑

每个权限条目对应的permissionDetails属性中包含两个核心标识字段:

  • inherited:布尔值,false代表当前权限是直接授予目标文件/文件夹的显式权限,true代表权限从上级资源继承而来
  • inheritedFrom:字符串,仅当inherited为true时返回,标识权限继承的上级资源ID

前置准备

在Google Apps Script编辑器的「服务」菜单中添加Drive API v3服务,内置的DriveApp高级服务无法获取权限来源字段,不可使用。

示例代码

// 传入目标文件/文件夹ID即可查询所有权限的来源
function getPermissionSource(targetResourceId) {
  // 调用Drive API拉取权限列表,明确指定返回permissionDetails字段
  const res = Drive.Permissions.list(targetResourceId, {
    supportsAllDrives: true, // 涉及共享盘时必须开启
    fields: "permissions(emailAddress,role,permissionDetails)"
  });
  const permissionList = res.permissions || [];

  permissionList.forEach(item => {
    const detail = item.permissionDetails[0];
    const isExplicitPermission = !detail.inherited;
    // 可根据业务需求替换为写入表格/其他逻辑
    console.log(`授权对象:${item.emailAddress || '公开/域内权限'},权限角色:${item.role}`);
    console.log(isExplicitPermission ? "权限类型:显式授予" : `权限类型:继承自资源 ${detail.inheritedFrom}`);
  });
}

注意事项

  • 共享盘根目录下的用户权限默认均为显式授予,无上级继承来源
  • 批量查询大量资源权限时需遵守Drive API的调用配额限制,避免触发限流报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 00:45:05