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

如何用Microsoft Graph API写入SharePoint‘人员或组’字段并匹配用户ID?

如何将Microsoft Graph用户ID映射到SharePoint人员列的LookupId?

这个问题我之前也碰到过,核心原因是SharePoint的SG_ResponsibleLookupId是站点级的用户/组ID,而Graph /users返回的是租户级的Azure AD全局ID,两者本身就不是同一个标识体系。下面给你几个实用的解决思路:

方法一:直接通过Graph API获取用户在目标SharePoint站点的ID

这是最直接的方式,调用Graph的站点用户接口,传入用户的Azure AD ID或用户主体名称(UPN),就能拿到对应的SharePoint站点内ID:

请求示例(用用户邮箱):

GET https://graph.microsoft.com/v1.0/sites/{你的站点ID}/users/john@example.com

或者用Azure AD ID:

GET https://graph.microsoft.com/v1.0/sites/{你的站点ID}/users/76a3b5b7-768b-4dde-ba13-6d471aa2c7fd

返回的响应里的id字段就是你需要的SG_ResponsibleLookupId值(比如示例中的12):

{
  "id": "12",
  "displayName": "John Doe",
  "userPrincipalName": "john@example.com",
  "email": "john@example.com"
}

方法二:创建列表项时跳过LookupId,直接关联用户

其实完全不用手动去查LookupId,Graph支持直接通过Azure AD用户信息绑定人员列,更省心:

方式A:使用@odata.bind关联用户

POST https://graph.microsoft.com/v1.0/sites/{站点ID}/lists/{列表ID}/items
Content-Type: application/json

{
  "fields": {
    "Title": "Test 3",
    "SG_Responsible@odata.bind": "https://graph.microsoft.com/v1.0/users('76a3b5b7-768b-4dde-ba13-6d471aa2c7fd')"
  }
}

方式B:直接传入用户邮箱

POST https://graph.microsoft.com/v1.0/sites/{站点ID}/lists/{列表ID}/items
Content-Type: application/json

{
  "fields": {
    "Title": "Test 3",
    "SG_Responsible": {
      "Email": "john@example.com"
    }
  }
}

这两种方式都会自动帮你关联到对应的SharePoint站点用户ID,不需要手动处理映射关系。

补充:组的处理逻辑

如果你的人员列允许选择组,逻辑和用户一样:

  • 调用GET /sites/{站点ID}/groups/{组的Azure AD ID}获取站点内组ID
  • 或者创建列表项时用@odata.bind关联组:"SG_Responsible@odata.bind": "https://graph.microsoft.com/v1.0/groups('{组ID}')"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:07:53