こんにちは、あんこ先生です。
ユーザー列に書き込もうとして、ひたすら失敗した経験ありませんか?
SharePointリストのユーザー列、デフォルトのフォームからだとかんたんに書き込めます。
反面、それ以外の方法となると一気に難易度が高くなるにくい列です。
ユーザー情報なので、Office365ユーザーやOffice365グループから選択した値を書き込みたいですよね。
残念、そのまま指定してもエラーすら出ず弾かれてしまうんです。
この理由は、ユーザー列の更新に必要な列が存在しないことに起因します。
そんなこと言われても意味わかんないですよね。
そこで、今回は様々なアプローチでユーザー列に書き込む方法を解説します。
これできるようになると、ギャラリーから選択したユーザーを書き込んだりもできますよ。
コンボボックス云々については、別記事で紹介していますのでこちらをご確認ください。
Contents
様々なアプローチでユーザー列に書き込む方法
試してみること
今回はフォームコントロールからユーザー列を更新する方法に限定します。
アプローチ方法は次の3点です。
- 普通にフォームから更新する
- Office365ユーザーの情報を使って更新する
- Office365グループの情報を使って更新する
事前準備
![](https://i0.wp.com/anko7793.com/wp-content/uploads/2022/12/image.png?resize=728%2C471&ssl=1)
はじめにユーザー列だけのSharePointリストを作成します。
他の列はあっても邪魔にしかならないので消しておきます。
Title列は必須を外して非表示にしておくとスッキリしますよ。
ユーザー列は列の追加でユーザーまたはグループを選択すればできますよ。
細かい設定もできますが、今回のお話とはズレるので省略しますね。
ではさっそく試してみましょう!
普通にフォームからユーザー列を更新する
![](https://i0.wp.com/anko7793.com/wp-content/uploads/2022/12/image-1.png?resize=592%2C395&ssl=1)
はじめは一般的な方法です。
システムが自動的に構築してくれるのでちゃんと動きます。
反面、ユーザー選択するためにメールアドレスを入力しないといけません。
下の名前を知らない同僚を選ぶときにちょっと困りますね。
とりあえず実行してみると問題なく書き込めたことがわかります。
![](https://i0.wp.com/anko7793.com/wp-content/uploads/2022/12/image-3.png?resize=597%2C353&ssl=1)
コードの確認
![](https://i0.wp.com/anko7793.com/wp-content/uploads/2022/12/image-2.png?resize=728%2C133&ssl=1)
ユーザー列のカードあるコンボボックスにChoices関数が使われています。
実際に書き込まれる値であるUpdateには、その選択結果が指定されていますね。
つまり、このカードのコンボボックスで選択したレコード構成なら書き込めるということです。
レコード構成の確認
![](https://i0.wp.com/anko7793.com/wp-content/uploads/2022/12/image-4.png?resize=728%2C152&ssl=1)
ちょっと見づらいですが、コレクションに落として中身を確認しました。
全部で6項目ありますね。
他のユーザー情報もこのレコード構成にすれば書き込めることがわかりましたね。
Office365ユーザーの情報を使ってユーザー列を更新する
![](https://i0.wp.com/anko7793.com/wp-content/uploads/2022/12/image-6.png?resize=600%2C601&ssl=1)
コードの確認
![](https://i0.wp.com/anko7793.com/wp-content/uploads/2022/12/image-7.png?resize=728%2C329&ssl=1)
ユーザー列のコンボボックスにMyProfileV2を直接入力してみました。
結果、テーブルとレコードで型が違うよって怒られました。
そこでTable関数で囲ってみるとエラーは消えましたが、何も表示されません。
ユーザーを特定するための何かが足りないんですね。
同様にUpdateもMyProfileV2にして試してみました。
エラーは表示されませんが、実行すると空レコードができあがりました。
![](https://i0.wp.com/anko7793.com/wp-content/uploads/2022/12/image-8.png?resize=554%2C363&ssl=1)
レコード構成の確認
![](https://i0.wp.com/anko7793.com/wp-content/uploads/2022/12/image-9.png?resize=728%2C153&ssl=1)
原因を確かめるため、MyProfileV2をコレクションに落として中身を見てみます。
一目瞭然、項目数が雲泥の差ですよね。
非常に見づらいですが、大文字小文字の違いもあります。
じゃあどうしようもないの?
いえ、それをどうにかするのがこの記事の目的です。
MyProfileV2をユーザー列に書き込む
![](https://i0.wp.com/anko7793.com/wp-content/uploads/2022/12/image-10.png?resize=728%2C371&ssl=1)
言葉にするととてもかんたん、レコード項目を合わせるだけです。
さらにClaims列さえあれば良く、他の列を削除する必要もありません。
Claims列はメールアドレスが入っていれば機能します。
そのため、図のようにClaims列を追加し、もとからあるmail列の値を放り込みます。
UserProfileV2でも同じやり方でできますよ。
![](https://i0.wp.com/anko7793.com/wp-content/uploads/2022/02/b71d433ab01023f27d6f2222306daaf7.png?resize=100%2C100&ssl=1)
Claims列の i:0#.f|membership| は省略できるよ。
Office365グループの情報を使ってユーザー列を更新する
![](https://i0.wp.com/anko7793.com/wp-content/uploads/2022/12/image-11.png?resize=728%2C181&ssl=1)
入力を容易にするにはやはり選択式がいいですよね。
Office365グループのListGroupMembersをギャラリーに展開し、メンバーを選べるようにしました。
これなら入力の手間が省けますよね。
レコード構成の確認
![](https://i0.wp.com/anko7793.com/wp-content/uploads/2022/12/image-12.png?resize=728%2C149&ssl=1)
とりあえずコレクションに落として中身を見てみます。
これまた全然違いますね。
入れ子になっているのはギャラリー内のコントロールです。
ただこの中にもメールアドレスを持っている列があるので、先ほどと同じやり方が使えます。
ギャラリーで選択したListGroupMembersをユーザー列に書き込む
![](https://i0.wp.com/anko7793.com/wp-content/uploads/2022/12/image-13.png?resize=728%2C269&ssl=1)
ItemsのみClaims列を追加すれば機能します。
ただそれだけではギャラリーで選択した名前が表示されません。
そのため、DefaultSelectedItemsにも同じコードを記述します。
フィールドの設定で主要なテキストをdisplayNameにすれば名前が表示されますよ。
様々なアプローチでユーザー列に書き込む方法のまとめ
今回は、様々なアプローチでユーザー列に書き込む方法を紹介しました。
とりあえずClaims列を追加してメールアドレスを投げ込めばよいことがわかりましたね。
特にグループメンバーをギャラリー展開したやり方はオススメです。
なぜならグループごとに絞り込まれたメンバーを一覧表示できるからです。
伝言メモの送付先一覧に使っていますが、とても便利なので重宝してます。
ただ、チェックリストなど当時のユーザー名が必要な場合は、テキスト列で保存した方が適しています。
状況に応じて使い分けてくださいね。
ローマ字入力になるので、例えば藤~がhujiで出てこなかったり、shimaとjimaの違いだったりとモヤモヤします。