如何使用Microsoft Graph API更新SharePoint列表中的人员或组列的值?

时间:2017-03-09 16:55:20

标签: sharepoint microsoft-graph

我的情况

我使用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请求主体的外观如何?

感谢您的任何建议!

3 个答案:

答案 0 :(得分:1)

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

{
   "AssignedToLookupId":"123"
}

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

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

答案 1 :(得分:0)

我想我找到了一种解决方法,而不是图:使用sharepoint rest api创建/更新多个localhost:8040字段,而不是使用AAD Client({{ADL.js )并连接到Application in your AAD。它适用于SPFx Webpart和Azure函数。但是无论如何,可惜官方没有来自微软的信息。

答案 2 :(得分:0)

经过反复修改后,我设法通过使用msgraph找到了解决方案,而不必切换回sharepoint v1.0 api。 解决方案:您可以使用displayName提取用户列表:“用户信息列表”

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

类似地,如果有新条目,您将首先需要以通常的方式在列表中添加一个新的listItem,然后使用新创建的ID来按照答案中的建议设置LookupField。