【SharePoint】PowerAutomateやPowerappsでのSPOのユーザー列の取り扱い、データ構成について
背景
下記のような場面でSharePointOnlineのユーザー列のデータ形式を知る必要があったので、ユーザー列への値設定方法についてわかる範囲でまとめてみました。
◆PowerAppsでSharePointリストをデータソースとしており、ユーザー列のコンボボックスに任意のユーザーを設定する場面
◆PowerAutomateでSharePointリストアイテムの列値の更新時、ユーザー列に任意のユーザーを指定する場面
1.SPOのユーザー列のデータ構成
PowerAutomateの「項目の取得」アクションでユーザー列の値を取得してきたJSONの構成が下記になります。
※[@odata.type]プロパティ以外以外にも値が入ってきますが、ここでは構成を確認したかっただけなので空文字に加工しております。
{
"@odata.type": "#Microsoft.Azure.Connectors.SharePoint.SPListExpandedUser",
"Claims": "i:0#.f|membership|" & UPN"),
"DisplayName": "",
"Email": "",
"Picture": ,
"Department": "",
"JobTitle": ""
}
PowerAutomate内では上記データの[@odata.type]プロパティ以外のプロパティを参照することが出来ます。
2.PowerAppsでSharepointリストのユーザー列をデータソースとするコントロールに任意のユーザーを設定する方法
Powerapps上のコンボボックスなどの規定値や更新値に任意のユーザーを設定する方法について記載します。
下記画像では、Sharepointリストのユーザー列をデータソースとするコンボボックスの「DefaultSelectedItems」プロパティに任意のユーザーを設定して規定値としています。
-「Claims」,「DisplayName」のプロパティは必須項目となります。
-「Claims」には "i:0#.f|membership|" & Lower("任意のメールアドレス")を指定します。
-「DisplayName」はコンボボックスで選択されている項目の表示名として使われますが、実際にユーザー情報のDisplayNameは更新されません。
リストフォームを開くと下記のように初期表示されます。
-複数ユーザーの指定の際は、上記オブジェクトをTable関数で配列に追加した形で設定します。
例)
Table(
{
Claims: "i:0#.f|membership|XXX@BBB.onmicrosoft.com",
DisplayName: "羊 太郎",
Email: "",
Picture: "",
Department: "",
JobTitle: ""
},{
Claims: "i:0#.f|membership|UUU@BBB.onmicrosoft.com",
DisplayName: "象 太郎",
Email: "",
Picture: "",
Department: "",
JobTitle: ""
})
3.PowerAppsでPatch関数を使ってリストのユーザー列に任意のユーザーを設定する方法
Patch関数で直接Sharepointリストのユーザー列の値を設定する際も、前述した構成のオブジェクトや配列を指定することで保存が可能です。
下記コードでは、リストに[Title]列(1行テキスト)と[ユーザー選択列](ユーザー列)を指定してアイテムを追加している。
Patch(検証リスト ,Defaults(検証リスト),
{
Title:"title",
ユーザー選択:
{
Claims: "i:0#.f|membership|" & Lower(メールアドレス),
Department: "",
DisplayName: "",
Email: "",
JobTitle: "",
Picture: ""
}
}
);
4.PowerAutomateでSharepointリストのユーザー列を任意のユーザーに設定する方法
PowerAutomateの「項目の更新」アクションなどでユーザー列に任意のユーザーを設定する方法について記載します。
[ユーザー選択]ユーザー列(単数選択)にClaims値を設定する。
複数選択可能のユーザー列の更新については下記記事をぜひご覧ください。
hitsuji-techblog.hatenablog.com
以上