IT Hands-on Lab

小規模組織向けIT環境の構築・運用に役立つ情報を、ハンズオン形式で紹介しています。

【Power Apps】MS Entra IDユーザー情報反映機能付き メンバー情報管理アプリ1

PowerApps MS Entra IDユーザー情報反映機能付き メンバー情報管理アプリ1

Microsoft社が提供するローコード開発ツール「Power Platform」のアプリ機能(Power Apps)を使用した、Microsoft Entra IDのユーザー情報反映機能付きメンバー情報管理アプリの作成例を紹介します。
  • 操作環境:
    • 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のユーザー情報と入力内容に相違がある場合、入力内容を赤文字で表記する。

 

処理の流れは以下の通りです。

図表1-1 処理の流れ

図表1-1 処理の流れ

 

このアプリで扱う項目は以下の通りとします。
部署・役職・勤務先はリスト選択+手入力(コンボボックス使用)の方が良いかもしれませんが、新規登録時の入力補助機能を用意するのと、コンボボックスを使用すると作りが複雑になるため、今回はシンプルに一行テキストとしました。
また、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(メール) 一行テキスト Mail  
image(ユーザー画像) 画像     UserPhoto  
account_enabled(有効なアカウント) true/false   - trueを規定値とする、falseの場合はアプリに表示しない
memo(メモ) 複数行テキスト     -  
図表1-2 取り扱い項目

 

アプリの完成イメージ

先にアプリの完成イメージを紹介します。

 

まずは一覧検索機能です。

  • 左:アプリにアクセスすると、一覧画面にSharePointリストに格納されている有効な(account_enabledがtrue)全メンバーが表示されます。
  • 中:コンボボックスで部署を選択すると(複数可)、該当メンバーに絞り込みします。未選択時は有効な全メンバーが表示されます。
  • 右:入力欄に指名のキーワードを入力すると、部分一致するメンバーに絞り込みします。未入力時は有効な全メンバーが表示されます。

コンボボックスと入力欄の両方を指定すると、両条件に合致するメンバーに絞り込みします。[User Ddd]メンバーのようにユーザー画像が未登録の場合、画像表示部分はブランクを設定しています。

図表2-1 完成イメージ(一覧画面)

図表2-1 完成イメージ(一覧画面)

 

次は新規登録機能です。

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

図表2-2 完成イメージ(新規登録)

図表2-2 完成イメージ(新規登録)

 

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

図表2-3 完成イメージ(新規登録の続き)

図表2-3 完成イメージ(新規登録の続き)

 

最後は変更機能です。

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

図表2-4 完成イメージ(変更)

図表2-4 完成イメージ(変更)

 

SharePointリスト用意

SharePointの任意のサイト(*)にアクセスし、左メニューの[サイトコンテンツ]を選択し、[新規>リスト]を選択します。

*アプリユーザーにSharePointリストを直接触らせたくない場合は、アプリの管理者のみアクセスできるサイトが望ましいです

[空白のリスト]を選択します。
リストの[名前]を適宜入力し、[作成]を選択します。

図表3-1 SharePointリストの作成

図表3-1 SharePointリストの作成

 

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

図表3-2 SharePointリストの列の追加

図表3-2 SharePointリストの列の追加

 

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

図表3-3 SharePointリストの列の表示設定

図表3-3 SharePointリストの列の表示設定

 

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

*列の並び順の調整は対応必須ではありませんが、ギャラリーアプリ作成時にこの順で画面項目が生成されるため、画面項目の表示順にしておくと少しだけ楽になります

図表3-4 SharePointリストの列の順序設定

図表3-4 SharePointリストの列の順序設定

 

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

図表3-5 SharePointリストへのサンプルデータ登録

図表3-5 SharePointリストへのサンプルデータ登録

 

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

*役職・勤務先の設定画面は割愛しますが、名前と説明以外は部署と同じ設定です

図表3-6 SharePointリストの列の設定

図表3-6 SharePointリストの列の設定

 

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

図表3-7 SharePointリストの列の設定の続き

図表3-7 SharePointリストの列の設定の続き

 

ギャラリーアプリ作成

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

図表4-1 PowerAppsアプリの作成

図表4-1 PowerAppsアプリの作成

 

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

図表4-2 PowerAppsアプリのデータソース選択

図表4-2 PowerAppsアプリのデータソース選択

 

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

図表4-3 PowerAppsアプリの設定メニュー選択

図表4-3 PowerAppsアプリの設定メニュー選択

 

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

図表4-4 PowerAppsアプリの設定メニュー変更

図表4-4 PowerAppsアプリの設定メニュー変更

 

アプリ実装:基本部分

画面の表示タイトル変更

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

*左側[ツリービュー]で[LblAppName1]を選択し、[Text]プロパティの値を"メンバー情報管理"とする方法でも同じです

図表5-1 PowerAppsアプリのタイトル変更(一覧画面)

図表5-1 PowerAppsアプリのタイトル変更(一覧画面)

 

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

図表5-2 PowerAppsアプリのタイトル変更(詳細画面,編集画面)<

図表5-2 PowerAppsアプリのタイトル変更(詳細画面,編集画面)

 

データソースの追加

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

図表5-3 PowerAppsアプリのデータソース追加

図表5-3 PowerAppsアプリのデータソース追加

 

グローバル変数の定義

追加・編集・削除アイコンの表示制御を行うためのグローバル変数を定義します。

*画面間で共通的に使用する変数は、コンテキスト変数ではなくグローバル変数を使用します

左側[ツリービュー]の[App]を選択し、左上[Formulas]プロパティを選択し、以下の通り設定します。

// アプリユーザーがシステム管理者かどうかの判断
glb_is_admin = If(
  CountRows(
    Filter(
      Office365ユーザー.SearchUserV2(
        {searchTerm:"", isSearchTermRequired:false}
      ).value, 
      And(UserPrincipalName = User().Email, Department="管理部(IT)")
    )
  )=0,
false, true);
*[Fomulas]プロパティの式の意味:Office365ユーザー情報からアプリユーザーのUPNが一致かつ所属が"管理部(IT)"のデータを検索し、該当データが0件ならシステム管理者でない/あればシステム管理者である、と判定します。また、[Formulas]プロパティは他のプロパティと記述方法が若干異なります
*メールアドレスとユーザープリンシパル名が一致する場合は考慮不要ですが、厳密にはUser().Emailはメールアドレスではなくユーザープリンシパル名を返します。よって、この例ではOffice365ユーザーのUserPrincipalNameとの値比較を行っています
*[App.OnStart]プロパティでもSet関数により同じ設定ができますが、[…>設定]メニューの最後の項目に記載されている通り、遅延が発生する可能性があるため使用は推奨しません

図表5-4 PowerAppsアプリのグローバル変数定義

図表5-4 PowerAppsアプリのグローバル変数定義

 

追加・編集・削除アイコンの表示制御

図表5-4のグローバル変数を使用し、一覧画面の追加アイコンと、詳細画面の編集・削除アイコンの表示制御を設定します。
一覧画面右上の追加アイコンを選択し、以下の通り設定します。

  • Visibleプロパティ:If(glb_is_admin=true,true,false)
    *[Visible]プロパティの式の意味:システム管理者の場合は表示します。単にglb_is_adminでも同じ結果を返します

詳細画面の削除アイコンも同様に設定します。

図表5-5 PowerAppsアプリの追加・削除アイコンの表示制御

図表5-5 PowerAppsアプリの追加・削除アイコンの表示制御

 

詳細画面の編集アイコンはシステム管理者に加え、アプリユーザーの本人データの場合も使用可能としますので、式が若干異なります。
詳細画面右上の編集アイコンを選択し、以下の通り設定します。

  • Visibleプロパティ:If(DataCardValue1.Text=User().Email || glb_is_admin = true, true, false)
    *[Visible]プロパティの式の意味:画面のUPNの値(この例ではDataCardValue1.Text)とアプリユーザーのUPNが一致する、またはシステム管理者の場合は表示します

図表5-6 PowerAppsアプリの編集アイコンの表示制御

図表5-6 PowerAppsアプリの編集アイコンの表示制御

 

次の記事へ続きます。

 

 

当ブログ内の連載記事

elmgrn.hatenablog.com

elmgrn.hatenablog.com