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

如何通过MS Graph API获取Teams班级的Members组GUID?

解决Teams班级Class Materials驱动器中按学生单独设置文件夹权限的问题

核心场景与问题

使用Teams「Class」模板创建的班级团队,默认包含:

  • Owners组(教师,拥有Class Materials驱动器读写权限)
  • Members组(学生,拥有Class Materials驱动器只读权限)
  • Visitors组(未启用)

需求是在Class Materials驱动器中创建单个学生专属可见的作业文件夹:先建通用父文件夹assignments,再为每个学生创建子文件夹,移除子文件夹的Members组权限后单独添加对应学生权限。但直接移除子文件夹的Members权限会同步影响父文件夹,需通过Graph API实现全自动化权限配置,核心难点是获取Members组的GUID(从文件夹权限接口返回的是短ID,而非完整GUID)。

解决方案步骤

1. 获取班级团队的Azure AD Group ID

首先定位目标班级对应的Azure AD组,调用Graph API:

GET https://graph.microsoft.com/v1.0/groups?$filter=displayName eq '你的班级团队名称'&$select=id,displayName

从返回结果中提取班级的id(即Group ID)。

2. 获取班级Members组(学生组)的完整GUID

Teams Class模板会自动生成命名格式为grp-<班级名称> Members的学生组,通过以下API筛选获取其GUID:

GET https://graph.microsoft.com/v1.0/groups?$filter=displayName eq 'grp-你的班级名称 Members'&$select=id

返回结果中的id即为所需的Members组完整GUID。

3. 创建通用父文件夹assignments

在Class Materials驱动器中创建父文件夹,调用API:

POST https://graph.microsoft.com/v1.0/drives/{driveId}/items/root/children

请求体:

{
  "name": "assignments",
  "folder": {},
  "@microsoft.graph.conflictBehavior": "rename"
}

保存返回结果中的id(即父文件夹ID)。

4. 创建学生专属子文件夹并打破权限继承

为每个学生创建子文件夹后,必须先打破权限继承(避免修改子文件夹权限影响父文件夹):

4.1 创建子文件夹

POST https://graph.microsoft.com/v1.0/drives/{driveId}/items/{assignmentsFolderId}/children

请求体:

{
  "name": "学生姓名/ID专属文件夹",
  "folder": {},
  "@microsoft.graph.conflictBehavior": "rename"
}

保存子文件夹的id。

4.2 打破权限继承

调用API复制父文件夹现有权限并切断继承:

POST https://graph.microsoft.com/v1.0/drives/{driveId}/items/{studentFolderId}/breakInheritance

请求体:

{
  "copyExistingPermissions": true
}

5. 移除子文件夹的Members组权限并添加学生单独权限

5.1 获取子文件夹中Members组的权限ID

调用API筛选出对应Members组的权限项:

GET https://graph.microsoft.com/v1.0/drives/{driveId}/items/{studentFolderId}/permissions?$filter=grantedToV2/siteGroup/id eq '{membersGroupGUID}'

从返回结果中提取权限项的id(即permissionId)。

5.2 删除Members组权限

DELETE https://graph.microsoft.com/v1.0/drives/{driveId}/items/{studentFolderId}/permissions/{permissionId}

5.3 添加单个学生的访问权限

POST https://graph.microsoft.com/v1.0/drives/{driveId}/items/{studentFolderId}/invite

请求体(替换为目标学生的用户GUID):

{
  "recipients": [
    {
      "user": {
        "id": "学生用户GUID"
      }
    }
  ],
  "message": "这是你的专属作业文件夹",
  "requireSignIn": true,
  "sendInvitation": false,
  "roles": ["read"]
}

关键说明

  • 必须先执行打破权限继承操作,否则修改子文件夹的继承权限会同步影响父文件夹,这是解决权限同步问题的核心。
  • 通过筛选组名称获取Members组GUID,可完全适配自动化脚本流程,无需依赖网页端手动操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 09:33:19