如何使用 Microsoft Graph API 更新 SharePoint 列表中个人或组列的值?
How do I update the value of Person or Group columns in SharePoint lists using the Microsoft Graph API?
我的情况
我正在使用 Microsoft Graph API(测试版)更新 SharePoint ListItems。但是,我无法更改 'Person or Group' 列的值。该列具有属性 'Allow multiple selections' 并接受个人和组。这是它作为 ListItem columnSet 的一部分的样子:
{
"AssignedTo": [
{
"Email": "user@domain.com",
"LookupId": 123,
"LookupValue": "User Name"
}
]
}
什么有效
更新 'Person or Group' 以外的列的值工作正常:As documented,我正在向 ListItem 的 columnSet 发送 PATCH 请求。请求 header 包含内容类型 'application/json',请求 body 包含列名及其(新)值的 JSON-encoded 字典:
{
"RegularColumn": "new value"
}
什么不起作用
我已经尝试了很多使用用户 ID、电子邮件 and/or 名称的方法,但我得到的只是这个错误:'The request is malformed or incorrect.'
如何更新 'Person or Group' 列的值?示例 JSON 请求 body 会是什么样子?
感谢您的任何建议!
我想我找到了一个解决方法,如何制作它而不是图形:使用共享点休息 api 用于 creating/updating 多个 'Person or Group'
字段而不是 Graph api
使用 AAD Client (ADAL.js) with connection to Application in your AAD。它适用于 SPFx webpart 和 Azure Functions。不过不管怎么说,遗憾的是官方没有微软的消息
我一直在寻找同一问题的解决方案很长一段时间,但在 Whosebug 或网络上没有找到任何解决方案。感谢来自 Vadim Gremyachev (See the related question regarding fields of type 'lookup' here) 的 post,我能够通过图形 Api.您可以更新单值 'personOrGroup' 字段,方法是将字段名称与 LookupId 组合并将 LookupId 作为值传递:
{
"AssignedToLookupId":"123"
}
如果要更新多值'personOrGroup'字段,需要先指定数据类型并将ids作为数组传递:
{
"AssignedToLookupId@odata.type":"Collection(Edm.String)",
"AssignedToLookupId":["123", "124"]
}
经过大量修改后,我设法通过使用 msgraph 找到了解决方案,而无需切换回 Sharepoint v1.0 api。
Solution:you 可以使用 displayName: "用户信息列表" 拉取用户列表
示例:
GET https://graph.microsoft.com/v1.0/groups/{group-id}/sites/root/lists/User 信息列表/
(这包含用户的查找 ID。另外,换句话说,这是 personOrGroup 列用于查找的列表)
如果是新条目,同样,您首先需要以通常的方式向上面的列表添加一个新的 listItem,然后使用新创建的 ID 来设置 LookupField,如上面在答案中所建议的那样。
我的情况
我正在使用 Microsoft Graph API(测试版)更新 SharePoint ListItems。但是,我无法更改 'Person or Group' 列的值。该列具有属性 'Allow multiple selections' 并接受个人和组。这是它作为 ListItem columnSet 的一部分的样子:
{
"AssignedTo": [
{
"Email": "user@domain.com",
"LookupId": 123,
"LookupValue": "User Name"
}
]
}
什么有效
更新 'Person or Group' 以外的列的值工作正常:As documented,我正在向 ListItem 的 columnSet 发送 PATCH 请求。请求 header 包含内容类型 'application/json',请求 body 包含列名及其(新)值的 JSON-encoded 字典:
{
"RegularColumn": "new value"
}
什么不起作用
我已经尝试了很多使用用户 ID、电子邮件 and/or 名称的方法,但我得到的只是这个错误:'The request is malformed or incorrect.'
如何更新 'Person or Group' 列的值?示例 JSON 请求 body 会是什么样子?
感谢您的任何建议!
我想我找到了一个解决方法,如何制作它而不是图形:使用共享点休息 api 用于 creating/updating 多个 'Person or Group'
字段而不是 Graph api
使用 AAD Client (ADAL.js) with connection to Application in your AAD。它适用于 SPFx webpart 和 Azure Functions。不过不管怎么说,遗憾的是官方没有微软的消息
我一直在寻找同一问题的解决方案很长一段时间,但在 Whosebug 或网络上没有找到任何解决方案。感谢来自 Vadim Gremyachev (See the related question regarding fields of type 'lookup' here) 的 post,我能够通过图形 Api.您可以更新单值 'personOrGroup' 字段,方法是将字段名称与 LookupId 组合并将 LookupId 作为值传递:
{
"AssignedToLookupId":"123"
}
如果要更新多值'personOrGroup'字段,需要先指定数据类型并将ids作为数组传递:
{
"AssignedToLookupId@odata.type":"Collection(Edm.String)",
"AssignedToLookupId":["123", "124"]
}
经过大量修改后,我设法通过使用 msgraph 找到了解决方案,而无需切换回 Sharepoint v1.0 api。 Solution:you 可以使用 displayName: "用户信息列表" 拉取用户列表
示例: GET https://graph.microsoft.com/v1.0/groups/{group-id}/sites/root/lists/User 信息列表/ (这包含用户的查找 ID。另外,换句话说,这是 personOrGroup 列用于查找的列表)
如果是新条目,同样,您首先需要以通常的方式向上面的列表添加一个新的 listItem,然后使用新创建的 ID 来设置 LookupField,如上面在答案中所建议的那样。