我使用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请求主体的外观如何?
感谢您的任何建议!
答案 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。