
- 操作環境:
- OS:Windows 11
- Webブラウザー:Edge
- 使用プラン:Microsoft 365 Business Premium
前の記事で紹介したメンバー一覧アプリは、Microsoft Entra IDのユーザー情報を照会するだけの仕様でした。今回はSharePointリストにデータを保持し、登録時の入力補助機能としてMicrosoft Entra IDのユーザー情報を反映できる仕様とします。
要件・処理の流れ・項目の整理
この例では、以下のような要件にもとづき、アプリを実装します。
- データはSharePointリストに格納し、UPN(ユーザープリンシパル名)とMailを一意の値として保持する。また、UPNはアプリ内で変更しない前提とする。
- アプリは上記SharePointリストを元に作成できる、モバイル向けのギャラリーアプリ(一覧・詳細・編集の三画面構成)を使用する。
- ユーザーが利用できるアプリ内の機能は以下の通りとする。
- 組織内メンバー:全データの照会と、本人データの変更(データ無効化を除く)を可能とする。
- システム管理者:上記に加え、全データの登録・変更(データ無効化を含む)・削除を可能とする。
- 一覧画面の機能要件は前の記事の工程5で紹介した、メンバー一覧アプリの一覧画面とほぼ同じとする。ただし、データソースが異なるため、設定の相違は若干ある。
- 詳細画面の機能要件はギャラリーアプリのテンプレートの通りで、特筆すべきことは特にない。
- 編集画面の機能要件は以下の通りとする。
- UPNは手入力と、Microsoft Entra IDおよびSharePointリストからの選択の両方を可能とする(コンボボックス使用)。
- 新規登録時は入力補助のため、UPNの値を元にMicrosoft Entra IDのユーザー情報から項目値を引用する。
- 上記項目値はツールチップで値を確認できるようにする。
- Microsoft Entra IDのユーザー情報と入力内容に相違がある場合、入力内容を赤文字で表記する。
処理の流れは以下の通りです。

このアプリで扱う項目は以下の通りとします。
部署・役職・勤務先はリスト選択+手入力(コンボボックス使用)の方が良いかもしれませんが、新規登録時の入力補助機能を用意するのと、コンボボックスを使用すると作りが複雑になるため、今回はシンプルに一行テキストとしました。
また、Microsoft Entra IDから反映する項目の詳細については、前の記事の工程2で画面イメージを交えて紹介していますので、必要に応じてご覧ください。
| 項目名(説明) | データ種類 | 必須 | 一意 | EntraID項目 | 特記事項 |
|---|---|---|---|---|---|
| upn(ユーザープリンシパル名) | 一行テキスト | ○ | ○ | UserPrincipalName | 登録時:リスト選択(Entra ID+SharePointリスト)+手入力 |
| display_name(表示名(氏名)) | 一行テキスト | ○ | DisplayName | ||
| department(部署) | 一行テキスト | ○ | Department | ||
| job_title(役職) | 一行テキスト | ○ | JobTitle | ||
| office_location(勤務先) | 一行テキスト | ○ | OfficeLocation | ||
| mobile_phone(携帯電話) | 一行テキスト | ○ | mobilePhone | ||
| mail(メール) | 一行テキスト | ○ | ○ | ||
| image(ユーザー画像) | 画像 | UserPhoto | |||
| account_enabled(有効なアカウント) | true/false | ○ | - | trueを規定値とする、falseの場合はアプリに表示しない | |
| memo(メモ) | 複数行テキスト | - |
アプリの完成イメージ
先にアプリの完成イメージを紹介します。
まずは一覧検索機能です。
- 左:アプリにアクセスすると、一覧画面にSharePointリストに格納されている有効な(account_enabledがtrue)全メンバーが表示されます。
- 中:コンボボックスで部署を選択すると(複数可)、該当メンバーに絞り込みします。未選択時は有効な全メンバーが表示されます。
- 右:入力欄に指名のキーワードを入力すると、部分一致するメンバーに絞り込みします。未入力時は有効な全メンバーが表示されます。
コンボボックスと入力欄の両方を指定すると、両条件に合致するメンバーに絞り込みします。[User Ddd]メンバーのようにユーザー画像が未登録の場合、画像表示部分はブランクを設定しています。

次は新規登録機能です。
- 左:一覧画面右上の[追加]アイコンから開始します。[追加]アイコンはシステム管理者のみ表示されるようにしています。
- 中:編集画面に遷移したら、UPNのコンボボックスを選択します。
- 右:UPNの選択肢はMicrosoft Entra IDと今回データを格納するSharePointリストのUPNの値です。選択したUPNがMicrosoft Entra IDのユーザー情報にあれば、項目display_nameからimageに値が反映されます。

- 左:前の画面(右側)の下の方のイメージです。Microsoft Entra IDから反映された値を変更すると、赤文字で表示されます(この例ではoffice_locationの値を変更)。また、ツールチップ(項目にカーソルを当てるとポップアップ表示)でMicrosoft Entra IDの値を確認することもできます。
- 中:UPNは手入力もできます。Microsoft Entra IDにないUPNを入力または選択した場合、項目display_nameからimageは反映されませんので、手入力が必要です。
- 右:保存が完了すると、一覧画面に戻り、新規登録したメンバーが表示されます。編集画面で項目account_enabledをオフにすると(account_enabledはシステム管理者のみ変更可能)、一覧画面に表示されなくなります。

最後は変更機能です。
- 左:一覧画面で変更したいメンバーを選択します。
- 中:詳細画面に対象メンバーの詳細情報が表示されます。削除アイコンはシステム管理者のみ、編集アイコンはシステム管理者とアプリユーザーの本人データの場合表示されます。編集アイコンを選択します。
- 右:編集画面が表示されます。新規登録時と異なり、UPNは変更できません。また、新規登録時と同様、項目display_nameからmailの値がMicrosoft Entra IDのユーザー情報と異なる場合は、赤文字で表示されます。ツールチップ(項目にカーソルを当てるとポップアップ表示)でMicrosoft Entra IDの値を確認することもできます。

SharePointリスト用意
SharePointの任意のサイト(*)にアクセスし、左メニューの[サイトコンテンツ]を選択し、[新規>リスト]を選択します。
[空白のリスト]を選択します。
リストの[名前]を適宜入力し、[作成]を選択します。

[列の追加]を選択し、この記事の最初の方の表で整理した取扱い項目に従い、列を追加します。
一通り列を追加したら、[列の追加>値の表示と非表示を切り替える]を選択します。

この例では[タイトル]列は使用しませんので、このチェックを外し、[適用]を選択します。
右上の設定アイコンを選択し、[リストの設定]を選択します。

[列の順序]を選択します。
タイトル列が一番最後になるよう並び順を変更し、[OK]を選択します。

対応必須ではありませんが、[新しいアイテムを追加]から一件データを登録しておきます。

参考まで、この例で追加した列のうち、ユーザープリンシパル名・表示名(氏名)・部署・携帯電話の設定画面を掲載します。

図表3-6の続きで、メール・ユーザー画像・有効なアカウント・メモの設定画面を掲載します。

ギャラリーアプリ作成
Power Appsの画面にアクセスし、左メニューの[アプリ]を選択し、[新しいアプリ>アプリテンプレートで開始する]を選択します。
[データ中心のモバイルアプリ]の[SharePointから]を選択します。

工程3で作成したSharePointリストがあるサイトを選択し(表示されない場合はURL指定)、対象のSharePointリストを選択し、[アプリを作成する]を選択します。

アプリの編集画面が表示されたら、上メニューの[・・・>設定]を選択します。

左メニューの[全般]設定において、アプリの名前、アイコン、自動保存のオフ/オン等を適宜調整します。
[データ行の制限]は、上限値の2000に変更することをお奨めします。

アプリ実装:基本部分
画面の表示タイトル変更
アプリの各画面の表示タイトルを設定します。
一覧画面において、中央の画面レイアウト上で表示タイトルを選択し、右側[プロパティ]の[ディスプレイ>テキスト]の値を"メンバー情報管理"とします。

詳細画面・編集画面の表示タイトルも同様に、[Text]プロパティの値を"メンバー情報管理"とします。

データソースの追加
Microsoft Entra IDのユーザー情報を取得するため、データソースにOffice365ユーザーを追加します。
左端の[データ]アイコンを選択し、 [Office 365]で検索し、 [Office 365 ユーザー]が表示されたらこれを選択します。
さらに、接続ユーザーを選択します。

グローバル変数の定義
追加・編集・削除アイコンの表示制御を行うためのグローバル変数を定義します。
左側[ツリービュー]の[App]を選択し、左上[Formulas]プロパティを選択し、以下の通り設定します。
// アプリユーザーがシステム管理者かどうかの判断
glb_is_admin = If(
CountRows(
Filter(
Office365ユーザー.SearchUserV2(
{searchTerm:"", isSearchTermRequired:false}
).value,
And(UserPrincipalName = User().Email, Department="管理部(IT)")
)
)=0,
false, true);

追加・編集・削除アイコンの表示制御
図表5-4のグローバル変数を使用し、一覧画面の追加アイコンと、詳細画面の編集・削除アイコンの表示制御を設定します。
一覧画面右上の追加アイコンを選択し、以下の通り設定します。
- Visibleプロパティ:If(glb_is_admin=true,true,false)
*[Visible]プロパティの式の意味:システム管理者の場合は表示します。単にglb_is_adminでも同じ結果を返します
詳細画面の削除アイコンも同様に設定します。

詳細画面の編集アイコンはシステム管理者に加え、アプリユーザーの本人データの場合も使用可能としますので、式が若干異なります。
詳細画面右上の編集アイコンを選択し、以下の通り設定します。
- Visibleプロパティ:If(DataCardValue1.Text=User().Email || glb_is_admin = true, true, false)
*[Visible]プロパティの式の意味:画面のUPNの値(この例ではDataCardValue1.Text)とアプリユーザーのUPNが一致する、またはシステム管理者の場合は表示します

次の記事へ続きます。
当ブログ内の連載記事