You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用REST API插入含人员选择器字段的SharePoint列表项报错求助

解决SharePoint人员选择器字段插入失败的问题

嘿,这个问题我之前帮不少开发者搞定过,你遇到的错误本质是人员选择器字段(ShareTicketWith)属于导航属性,它不接受单纯的原始值(比如直接传用户名、ID字符串),而是要求特定的数组包裹对象格式——哪怕只选一个用户也得用数组,因为这类字段天生支持多选,SharePoint API期望接收的是对象数组、空对象或者空值。

正确的请求格式(以REST API为例)

不管你用的是REST API、Power Automate还是其他开发工具,核心是给ShareTicketWith传对格式:

1. 单个用户的情况

{
  "TicketID": "TKT-001",
  "EmpID": "EMP-123",
  "ShareTicketWith": [
    {
      "LookupId": 123  // 优先用SharePoint内部的用户ID,最稳定
      // 也可以用Email:"Email": "user@yourdomain.com"
      // 或者LoginName:"LoginName": "i:0#.f|membership|user@yourdomain.com"
    }
  ]
}

2. 多个用户的情况

{
  "TicketID": "TKT-002",
  "EmpID": "EMP-456",
  "ShareTicketWith": [
    { "LookupId": 123 },
    { "Email": "colleague@yourdomain.com" }
  ]
}

必须注意的几个坑

  • 一定要用数组[]包裹用户对象:哪怕只选一个用户也不能省略数组,这是触发你那个错误的最常见原因!
  • 优先用LookupId:用户的邮箱、用户名可能变更,但SharePoint内部的用户ID是固定的,用它更可靠。
  • 如果不需要设置这个字段,直接省略它:就像你之前成功的情况那样,不要传null或者空数组(除非你明确要清空该字段)。

哪些格式会触发错误?(避坑指南)

下面几种错误格式都会导致你遇到的PrimitiveValue错误,一定要避开:

  • 直接传字符串:"ShareTicketWith": "user@yourdomain.com"
  • 传单个对象而非数组:"ShareTicketWith": {"Email": "user@yourdomain.com"}
  • 传原始数值:"ShareTicketWith": 123

如果是用Power Automate这类低代码工具,操作逻辑也是一样的——要把人员选择器的值配置成包含用户对象的数组,而不是直接输入用户信息。

内容的提问来源于stack exchange,提问作者Surendra Mourya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:54:23