使用Power Automate批量插入SharePoint Person类型字段报错求助
错误原因
SharePoint的Person类型字段属于导航属性,不能直接传入邮箱字符串(原始值),必须传入符合OData规范的对象或数组结构,这就是你收到InvalidClientQueryException错误的核心原因。
解决方法
1. 单个用户的字段结构
在批量请求的JSON体中,Person字段需要以对象形式传入,包含元数据和邮箱信息:
"[Person字段内部名称]": { "__metadata": { "type": "SP.Data.[列表名称]ListItem.UserInfo" }, "Email": "目标用户邮箱@domain.com" }
- 替换
[Person字段内部名称]为实际字段的内部名称(可在列表设置的字段编辑页面URL中获取) - 替换
[列表名称]为你的SharePoint列表名称(注意区分大小写)
2. 多用户的字段结构(若字段允许多选)
如果Person字段支持多选,需要用数组包裹多个用户对象:
"[Person字段内部名称]": [ { "__metadata": { "type": "SP.Data.[列表名称]ListItem.UserInfo" }, "Email": "user1@domain.com" }, { "__metadata": { "type": "SP.Data.[列表名称]ListItem.UserInfo" }, "Email": "user2@domain.com" } ]
3. 批量插入的完整请求示例
以Power Automate的「Send an HTTP request to SharePoint」动作为例:
- 请求方法:POST
- URL:
_api/web/lists/getbytitle('[列表名称]')/items - Headers:
Accept: application/json;odata=verboseContent-Type: application/json;odata=verbose
- Body(单条数据示例):
{ "__metadata": { "type": "SP.Data.[列表名称]ListItem" }, "Title": "测试条目", "[Person字段内部名称]": { "__metadata": { "type": "SP.Data.[列表名称]ListItem.UserInfo" }, "Email": "user@domain.com" } }
若批量插入多条数据,需使用$batch请求格式,每条数据都遵循上述Person字段结构。
注意事项
- 必须使用字段的内部名称而非显示名称,避免因名称空格或特殊字符导致解析失败。
- 确保目标用户的邮箱已存在于SharePoint站点的用户信息列表中(外部用户需先添加至站点)。
内容的提问来源于stack exchange,提问作者Wellerson Clayton
相关产品推荐
相关产品推荐

