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

SharePoint列表创建项:人员字段的OData类型配置及填充问题

解决SharePoint列表人员字段无法填充的问题

你遇到的核心问题是人员字段属于复杂类型,不能用Edm.String类型直接赋值——之前的代码把Assigned字段当成普通字符串处理了,这也是为什么传显示名称、ID或UPN都无效的原因。

下面是修正后的代码,我会给出两种常用的正确写法:

方法1:通过用户UPN(即Email)赋值

这种方式不需要提前获取用户在SharePoint站点的ID,只要有用户的UPN就能直接使用:

var fieldValueSet = new FieldValueSet();
fieldValueSet.AdditionalData = new Dictionary<string, object>();

// 保留你原来能正常工作的字段设置
fieldValueSet.AdditionalData.Add("Title@odata.type", "Edm.String");
fieldValueSet.AdditionalData.Add("Title", task.Title);
fieldValueSet.AdditionalData.Add("Plan@odata.type", "Edm.String");
fieldValueSet.AdditionalData.Add("Plan", plan.Title);
fieldValueSet.AdditionalData.Add("DueDate@odata.type", "Edm.String");
fieldValueSet.AdditionalData.Add("DueDate", task.DueDateTime);

// 修正人员字段的类型和值结构
fieldValueSet.AdditionalData.Add("Assigned@odata.type", "#Microsoft.Azure.Connectors.SharePoint.SPListExpandedUser");
fieldValueSet.AdditionalData.Add("Assigned", new {
    Email = assignee.UserPrincipalName // 这里传入用户的UPN/Email
});

var listItem = new ListItem { Fields = fieldValueSet };
await graphServiceClient.Sites["SPURL:/sites/ITOddeleni:"].Lists["ListName"].Items
    .Request()
    .AddAsync(listItem);

方法2:通过用户的SharePoint站点ID赋值

如果你能获取到用户在当前SharePoint站点内的ID(可以通过Graph API的/sites/{site-id}/users接口查询),可以用这种方式,效率会更高:

// 其他字段设置同上...

fieldValueSet.AdditionalData.Add("Assigned@odata.type", "#Microsoft.Azure.Connectors.SharePoint.SPListExpandedUser");
fieldValueSet.AdditionalData.Add("Assigned", new {
    LookupId = 123 // 替换为用户在当前站点的实际ID
});

额外注意事项

  • 确认Assigned是你列表中人员字段的内部名称:如果字段显示名有空格或特殊字符,内部名称会被自动转换(比如“Assigned To”的内部名称可能是AssignedTo或Assigned_x0020_To),可以在列表设置的字段详情页查看。
  • 如果是多人字段,需要把值改成数组,同时类型也要调整为集合类型:
    fieldValueSet.AdditionalData.Add("Assigned@odata.type", "#Collection(Microsoft.Azure.Connectors.SharePoint.SPListExpandedUser)");
    fieldValueSet.AdditionalData.Add("Assigned", new[] {
        new { Email = "user1@domain.com" },
        new { Email = "user2@domain.com" }
    });
    
  • 确保你的Graph API应用拥有足够权限:至少需要Sites.ReadWrite.All或者目标站点的Sites.ReadWrite权限。

内容的提问来源于stack exchange,提问作者Marek Kyzivát

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 09:20:56