使用Microsoft Graph API更新SharePoint查找字段时遇invalidRequest错误
问题描述
使用Microsoft Graph API更新SharePoint列表项的常规字段时可正常运行,请求示例:
PATCH https://graph.microsoft.com/v1.0/sites/{site-id}/lists/{list-id}/items/{item-id}/fields { "RegularField": "new_value" }
但更新查找字段时始终返回invalidRequest错误。尝试过两种请求体格式:
格式一:
{ "LookupField": [ { "id": "742" } ] }
格式二:
{ "LookupFieldLookupId": "742" }
错误响应:
{ "error": { "code": "invalidRequest", "message": "Invalid request", "innerError": { "date": "2024-02-04T09:15:57", "request-id": "...", "client-request-id": "..." } } }
已确认site-id、list-id、item-id及授权信息均正确,其他字段可正常更新。
核心问题
- 使用Microsoft Graph API更新SharePoint查找字段的正确格式是什么?
- 是否存在与当前方法不同的特定属性名称或格式需要使用?
解决方案
1. 单值查找字段更新格式
如果查找字段为单值(不允许多选),请求体需使用字段的内部名称,值为目标项的数字ID(不能是字符串):
{ "LookupFieldInternalName": 742 }
2. 多值查找字段更新格式
若字段支持多选,需传入包含id属性的对象数组,id同样为数字类型:
{ "LookupFieldInternalName": [ { "id": 742 } ] }
关键注意事项
- 必须使用内部名称:不要用列表显示的友好名称,需到SharePoint列表设置的字段详情页获取内部名称(例如显示名"客户名称"的内部名称可能是
客户_x0020_名称)。 - ID必须是整数类型:不能用引号包裹ID,Graph API要求查找项ID为数字,这是导致
invalidRequest的常见原因。 - 摒弃传统REST格式:
LookupFieldLookupId是SharePoint传统REST API的写法,Microsoft Graph API不兼容该格式。
内容的提问来源于stack exchange,提问作者cb0008
相关产品推荐
相关产品推荐

