将SharePoint用户写入SharePoint列表中的用户字段的正确方法

Ect*_*opy 5 sharepoint sharepoint-list sharepoint-2013 csom sharepoint-online

我正在将用户写入SharePoint列表.

我已经读过SharePoint User字段里面有这样的字符串: userId;#userLoginName

在写入User字段时,我尝试以相同的方式进行格式化,例如,当我编写此字符串时,它可以工作: 9;#i:0#.f|membership|ectropy@example.org

但奇怪的是(至少对我来说)9;#似乎工作甚至是9.即使我根本没有传递userLoginName信息,它loginId似乎足以识别我正在谈论的用户.

这似乎意味着在写入SharePoint用户字段时,您只需要id,以及userLoginName,或者实际上,之后的所有内容loginId都是无关紧要的.

我在推理中是否正确?或者,如果我不使用userLoginName信息,可能会产生意想不到的后果?

Vad*_*hev 7

您的假设是正确的,在为User字段指定值时,只有User Id是必需属性.

但由于SP.FieldUserValue对象用于存储User字段的值,因此建议使用此对象获取和设置值,如下例所示:

var ctx = SP.ClientContext.get_current();
var web = ctx.get_web();
var lists = web.get_lists();
var list = lists.getByTitle(listTitle);
var item = list.getItemById(itemId);

var assignedToVal = new SP.FieldUserValue();
assignedToVal.set_lookupId(11);   //specify User Id 
item.set_item(fieldName,assignedToVal);
item.update();

ctx.executeQueryAsync(
    function() {
        console.log('Updated');
    },
    function(sender,args) {
        console.log('An error occurred:' + args.get_message());
    }
);
Run Code Online (Sandbox Code Playgroud)