私も時間を見つけてはちまちまと回答を投稿している TechNet フォーラムでもときどき質問がありますが、「SharePoint の JSOM を利用して「ユーザーまたはグループ」列に上手く値を設定できない」という悩みを持たれる方が多くいらっしゃるようです。自分自身も忘れないようにメモしておきます。
Microsoft TechNet フォーラム – SharePoint
https://social.technet.microsoft.com/Forums/ja-JP/home?category=sharepoint
さっそくコード
まずは、ひとりのユーザーを設定する方法です。
var valSetUser = SP.FieldUserValue.fromUser("<username>");
oListItem.set_item("<fieldName>", valSetUser);
肝となるのは、SP.FieldUserValue.fromUser メソッドです。このメソッドの引数に指定する <username> は、ユーザー名のほか、メール アドレスなどでも大丈夫なようです。
SP.FieldUserValue.fromUser Method (sp.js)
https://msdn.microsoft.com/en-us/library/office/jj838503.aspx
また、配列にして複数のユーザーを設定する方法もあります。
var valUsersArray = new Array("<username1>","<username2>","<username3>");
var valSetUsers = [];
for(var i in valUsersArray){
var valPushUser = SP.FieldUserValue.fromUser(valUsersArray[i]);
valSetUsers.push(valPushUser);
}
oListItem.set_item("<fieldName>", valSetUsers);
ちょっとだけ違うのは SP.FieldUserValue を配列に入れて渡すというところだけですね。
さいごに
SharePoint のリスト列への値の設定は、列の種類によって作法があるのでややこしいですね。ちなみに、今回の記事に該当するフォーラムの投稿は下記です。
[SharePoint2010]JavaScriptでのリスト操作について
https://social.technet.microsoft.com/Forums/ja-JP/09a582c7-022d-4f4d-a1ac-fa3c480b9d18/