【问题标题】:How do I update the value of Person or Group columns in SharePoint lists using the Microsoft Graph API?如何使用 Microsoft Graph API 更新 SharePoint 列表中的人员或组列的值?
【发布时间】:2017-07-30 18:40:54
【问题描述】:

我的情况

我正在使用Microsoft Graph API(测试版)来更新 SharePoint ListItems。但是,我无法更改“个人或组”列的值。该列具有“允许多项选择”属性,并接受人员和组。这是它作为 ListItem columnSet 的一部分的样子:

{ 
  "AssignedTo": [
    {
      "Email": "user@domain.com", 
      "LookupId": 123, 
      "LookupValue": "User Name"
    }
  ]
}

什么有效

更新“个人或组”以外的列的值工作正常:As documented,我正在向 ListItem 的 columnSet 发送 PATCH 请求。请求标头包含内容类型“application/json”,请求正文包含列名及其(新)值的 JSON 编码字典:

{
  "RegularColumn": "new value"
}

什么不起作用

我已经对使用用户的 ID、电子邮件和/或姓名进行了很多尝试,但我得到的只是这个错误:“请求格式不正确或不正确。”

如何更新“个人或组”列的值?示例 JSON 请求正文是什么样的?

感谢您的任何建议!

【问题讨论】:

  • 您可以使用 Fiddler 并与我们分享请求和响应的 URL 和正文吗?
  • 您找到解决方案或解决方法了吗?分类字段也存在同样的问题。
  • @RuslanKrak 我最终放弃了,因此我们的应用程序仍然不支持更新这些类型的列。这也不再是优先事项。
  • @MichaelMainer 很抱歉没有回复您的请求。我不是这里的普通用户,至少没有登录。
  • @JakobKeller 感谢您的回复

标签: sharepoint microsoft-graph-api


【解决方案1】:

很长一段时间以来,我一直在寻找相同问题的解决方案,但在 StackOverflow 或网络上没有找到任何解决方案。感谢 Vadim Gremyachev (See the related question regarding fields of type 'lookup' here) 的帖子,我能够通过 Graph Api 使用激活的设置“allowMultipleSelection”成功更新“personOrGroup”类型的字段。您可以通过将字段名称与 LookupId 组合并将 LookupId 作为值传递来更新单个值“personOrGroup”字段:

{
   "AssignedToLookupId":"123"
}

如果要更新多值“personOrGroup”字段,需要先指定数据类型,并将 ids 作为数组传递:

{
   "AssignedToLookupId@odata.type":"Collection(Edm.String)",
   "AssignedToLookupId":["123", "124"] 
}

【讨论】:

  • 感谢您的回复。我不再使用 Graph API 并且无法验证响应,但它确实看起来很有希望,并且可能对其他为此苦苦挣扎的人有所帮助。因此接受。
【解决方案2】:

我想我找到了一种解决方法来代替 Graph:使用 sharepoint rest api 来创建/更新多个 'Person or Group' 字段而不是 Graph api 使用 AAD Client (ADAL.js) 并连接到 @987654322 @。它适用于 SPFx webpart 和 Azure Functions。但无论如何,可惜官方没有来自微软的信息。

【讨论】:

    【解决方案3】:

    经过大量修补后,我设法通过使用 msgraph 找到了解决方案,而无需切换回 sharepoint v1.0 api。 解决方法:可以使用 displayName: "User Information List" 拉取用户列表

    示例: 获取https://graph.microsoft.com/v1.0/groups/{group-id}/sites/root/lists/User信息列表/ (这包含用户的查找 ID。另外,换句话说,这是 personOrGroup 列用于查找的列表)

    如果是新条目,同样,您首先需要以通常的方式将新的 listItem 添加到上面的列表中,然后使用新创建的 id 来设置 LookupField,如上面答案中的建议。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-01-25
      • 2017-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-16
      • 2023-01-10
      相关资源
      最近更新 更多