IT Hands-on Lab

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

【Power Apps】マネージャー確認機能付き 執務日報アプリ1

PowerApps マネージャー確認機能付き 執務日報アプリ1

Microsoft社が提供するローコード開発ツール「Power Platform」のアプリ機能(Power Apps)を使用した、マネージャー確認機能付き(Teamsアダプティブカードによる通知・応答を含む)執務日報アプリの作成例を紹介します。
  • 操作環境:
    • OS:Windows 11
    • Webブラウザー:Edge
  • 使用プラン:Microsoft 365 Business Premium

 

 

要件・処理の流れ・項目の整理

この例では、以下のような要件にもとづき、アプリを実装します。

  • 組織内メンバーは自身の執務日報を登録・変更・削除できる。ただし、マネージャーに確認依頼をしたら、これらの操作は行えなくなる。
  • マネージャーはTeamsの確認依頼を受信し、そのメッセージ内で確認処理やコメント入力を行える。また、アプリ上からも操作できる。
  • 組織内メンバーのマネージャーはMS Entra IDのユーザー情報内のマネージャーより自動取得する。マネージャーが未設定(マネージャーが不在)の場合は、メンバー自身がマネージャーを兼務しているとみなす。
  • アプリでアクセスできる執務日報データは、自身が報告者かマネージャーに該当するデータに限る。
  • 執務日報データはSharePointリストに格納する。
  • アプリは上記SharePointリストを元に作成できる、モバイル向けのギャラリーアプリ(一覧・詳細・編集の三画面構成)を使用する。

 

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

図表1-1 処理の流れ

図表1-1 処理の流れ

 

このアプリで扱う項目は以下の通りとします。

項目名(説明) データ種類 必須 一意 初期値 特記事項
ID(ID) 数値   詳細&編集画面の見出しにラベル表示し、項目自体は非表示とする
working_day(稼働日) 日付 (*)     *報告者編集時は必須
reporter(報告者) 一行テキスト     (自動) 新規登録時:アプリユーザー
status(ステータス) 選択肢   (自動) 下書き、確認待、確認済
tasks(業務内容) 複数行テキスト *     *報告者編集時は必須
good_points (良かった点) 複数行テキスト        
improvement_points(改善点) 複数行テキスト        
manager(マネージャー) 一行テキスト     (自動) 新規登録時:アプリユーザーのマネージャー(未設定の場合はアプリユーザー)
manager_comment(マネージャーコメント) 複数行テキスト        
図表1-2 取り扱い項目

 

アプリの完成イメージ

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

 

アプリにアクセスすると、一覧画面に既存の執務日報データが表示されます。一覧画面の詳細説明は画面イメージの点線箇所の吹き出しの通りです。
まずは報告者による執務日報の新規登録を行ってみます。右上の[新規登録]アイコンから新規登録に進みます。

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

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

 

編集画面(新規登録)の画面イメージです。
報告日、業務内容、良かった点、改善点(入力領域が白色の項目)を入力できます。
入力したら、右上の[保存]アイコンを選択します。

図表2-2 完成イメージ(編集画面)

図表2-2 完成イメージ(編集画面)

 

続けて報告者による確認依頼を行ってみます。

  • 右:新規登録が完了すると再び一覧画面に遷移し、今登録したデータが表示されますので、これを選択します。
  • 中:画面上部の[確認依頼]アイコンを選択します。
  • 左:ステータスが[下書き]から[確認待]に変わり、右上のアイコンが消えました。

図表2-3 完成イメージ(報告者による確認依頼)

図表2-3 完成イメージ(報告者による確認依頼)

 

マネージャーによる確認処理を行ってみます。
マネージャー[User Aaa]さんでTeamsを開くと、確認依頼のメッセージが届いていました。
コメントを適宜入力して[確認済]と選択すると、メッセージが応答がアプリに送信された旨に変わりました。

図表2-4 完成イメージ(マネージャーによる確認処理:Teams)

図表2-4 完成イメージ(マネージャーによる確認処理:Teams)

 

報告者のアプリ画面に戻り、確認処理されたデータを照会してみます。

  • 右:報告者の一覧画面に戻り、[更新]アイコンを選択すると、ステータスが[確認済]に変わっている筈です。
  • 左:詳細画面を開くと、マネージャーからコメントがある場合はこれも表示されます。

図表2-5 完成イメージ(確認処理後のデータ反映)

図表2-5 完成イメージ(確認処理後のデータ反映)

 

なお、マネージャーはTeams通知からではなく、アプリの画面からも確認処理を行えます。

  • 右:マネージャーとして確認処理が必要なデータは一覧画面上水色になっています。これを選択します。
  • 中:詳細画面で内容を確認し、コメントしたければ右上の[編集]アイコンを選択します。
  • 左:コメントを入力したら、右上の[保存]アイコンを選択します。

図表2-6 完成イメージ(マネージャーによる確認処理:アプリ)

図表2-6 完成イメージ(マネージャーによる確認処理:アプリ)

 

  • 右:再び詳細画面に戻り、[確認]アイコンを選択します。
  • 左:ステータスが[確認済]に変わり、右上のアイコンが消えました。

図表2-7 完成イメージ(確認処理後のデータ反映)

図表2-7 完成イメージ(確認処理後のデータ反映)

 

SharePointリスト用意

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

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

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

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

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

 

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

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

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

 

[ID]列のチェックをつけ、[タイトル]列のチェックを外し、[適用]を選択します。
右上の設定アイコンを選択し、[リストの設定]を選択します。

図表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リストの列の設定

 

 

 

ギャラリーアプリ作成

Power Appsの画面にアクセスし、左メニューの[アプリ]を選択し、[新しいアプリ>アプリテンプレートで開始する]を選択します。

[データ中心のモバイルアプリ]の[SharePointから]を選択します。

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

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

 

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

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

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

 

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

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

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

 

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

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

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

 

アプリ実装:基本部分

データソースの追加

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

図表5-1 PowerAppアプリのデータソース追加

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

 

グローバル変数の定義(Office365ユーザー情報によるマネージャーの特定)

アプリユーザーのマネージャーを特定するためのグローバル変数を定義します。

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

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

//アプリユーザーのマネージャーの取得(マネージャーが未設定の場合はアプリユーザー自身とする)
glb_manager = If(IsError(Office365ユーザー.Manager(User().Email).DisplayName),
    User().FullName,Office365ユーザー.Manager(User().Email).DisplayName);
*式の意味:アプリユーザーのUPNを元にマネージャーの表示名を取得し、マネージャーが取得できない(エラーが発生する)場合はアプリユーザーの表示名を取得し、これを変数に格納します
*メールアドレスとユーザープリンシパル名が一致する場合は考慮不要ですが、厳密にはUser().Emailはメールアドレスではなくユーザープリンシパル名を返します。よって、この例ではOffice365ユーザーのUserPrincipalNameとの値比較を行っています
*[App.OnStart]プロパティでもSet関数により同じ設定ができますが、[…>設定]メニューの最後の項目に記載されている通り、遅延が発生する可能性があるため使用は推奨しません

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

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

 

アプリ実装:一覧画面

検索項目の追加

検索項目に報告日(開始・終了)、ステータス、報告者を追加します。
左の[ツリービュー] の[BrowserScreen1]を選択し、上メニューの[挿入]より以下部品を追加します。

  • 入力>日付の選択(2個)
  • テキストラベル
  • 入力>ドロップダウン
  • 入力>コンボボックス

また、元々用意されていた検索用のアイコンとテキスト入力は削除します(エラーが出ますが後で対応します)。

図表6-1 一覧画面の検索項目追加

図表6-1 一覧画面の検索項目追加

 

検索結果領域[BrowserGallery1]の位置を少し下にずらします。マウス操作がしにくい場合は、右側プロパティの[ディスプレイ]の[Y]や[高さ]への値入力でも対応できます(この例ではY=264、高さ=870)。

図表6-2 一覧画面の検索項目のレイアウト調整(GUI)

図表6-2 一覧画面の検索項目のレイアウト調整(GUI)

 

さらに、検索項目の部品名、配置、各種設定を調整します。

部品名 Width X Y その他の設定項目
dateStart 280 13 99 Size:21、DefaultDate:Today()-Weekday(Today(),StartOfWeek.Monday)+1
dateEnd 280 352 99 Size:21、DefaultDate:Today()
lblDateRange 59 293 99 Align:Align.Center、Text:"~"
drpStatus 280 13 181 AllowEmptySelection:true、Items:["下書き","確認待","確認済"]、Tooltip:"単数選択/再選択で解除"
cmbReporter 328 303 181 Items:Distinct(Sort(執務日報, reporter, SortOrder.Ascending),reporter)、Tooltip:"報告者(複数選択可/未選択時は全て)"
図表6-3 一覧画面の検索項目のレイアウト調整(設定値)

 

一通り調整すると、以下のようになります。

図表6-4 一覧画面の検索項目のレイアウト調整後の状態

図表6-4 一覧画面の検索項目のレイアウト調整後の状態

 

図表6-1でエラーが発生していた設定を修正します。
エラーアイコンを選択し、[数式バーで編集]を選択すると、該当箇所の設定式が表示されます。
元々用意されていた検索項目を起点に、境界線の縦位置(Y)を定義していたようで、検索項目を削除した影響でエラーが発生していました。この設定を適切な位置の値(この例では264)に変更しすることで、エラーを解消させます。

図表6-5 一覧画面の検索項目のレイアウト調整時のエラー修正

図表6-5 一覧画面の検索項目のレイアウト調整時のエラー修正

 

検索ロジックの変更

図表6-1で追加した検索項目を踏まえた検索ロジックに変更します。
ソースが長くなるので、右側のプロパティではなく上のプロパティ領域を広げて設定します。
左側の[ツリービュー]の[BrowseGallery1]を選択し、左上のリストから[Items]を選択し、以下の通り変更します。

Sort(
  Filter(
    [@執務日報],
    User().FullName = reporter || User().FullName = manager,
    dateStart.SelectedDate <= working_day && working_day <= dateEnd.SelectedDate,
    IsBlank(drpStatus.SelectedText.Value) || status.Value = drpStatus.SelectedText.Value,
    IsBlank(cmbReporter.SelectedItems) || IsEmpty(cmbReporter.SelectedItems) || reporter in cmbReporter.SelectedItems
  ),
  reporter,
  If(SortDescending1, SortOrder.Ascending, SortOrder.Descending)
)
*式の意味:アプリユーザーが報告者またはマネージャーとなっている執務日報データについて、報告日の範囲内で、ステータスと報告者の選択値(未選択は全件)で検索します。表示順は報告者の昇順とします(右上の並び替えアイコンで降順に切り替え可)

図表6-6 一覧画面の検索ロジック変更

図表6-6 一覧画面の検索ロジック変更

 

検索結果のレイアウト変更

左側の[ツリービュー]の[BrowseGallery1]を選択し、[ディスプレイ>レイアウト]を選択し、[タイトルとサブタイトル]を選択します。

図表6-7 一覧画面の検索結果のレイアウト変更

図表6-7 一覧画面の検索結果のレイアウト変更

 

検索結果の項目変更

左側の[ツリービュー]の[BrowseGallery1>Title1]を選択し、[詳細設定>Text]を以下の通り変更します。

" 【 " & ThisItem.status.Value & " 】 " & ThisItem.working_day & " : " & ThisItem.reporter & " ⇒ " & ThisItem.manager

さらに、位置や幅も調整します。

図表6-8 一覧画面の検索結果の項目変更(Title)

図表6-8 一覧画面の検索結果の項目変更(Title)

 

左側の[ツリービュー]の[BrowseGallery1>Subtitle1]を選択し、[詳細設定>Text]を以下の通り変更します。

ThisItem.tasks

さらに、位置や幅も調整します。

図表6-9 一覧画面の検索結果の項目変更(SubTitle)

図表6-9 一覧画面の検索結果の項目変更(SubTitle)

 

検索結果の背景色変更

ステータスとアプリユーザーの役割(報告者・マネージャー)に応じて背景色が変わるようにします。
左側の[ツリービュー]の[BrowseGallery1]を選択し、[詳細設定>TemplateFill]を以下の通り変更します。

If(ThisItem.status.Value= "下書き" && ThisItem.reporter=User().FullName, RGBA(253,252,219,1),
  If(ThisItem.status.Value= "確認待" && ThisItem.manager=User().FullName, RGBA(153,217,234,1), RGBA(0, 0, 0, 0)))
*式の意味:ステータスが下書きかつアプリユーザーが報告者なら薄黄色、ステータスが確認待かつアプリユーザーがマネージャーなら水色、その他は白色とします。白色以外は確認依頼や確認処理が必要なデータであることが判るようにしています

図表6-10 一覧画面の検索結果の背景色変更

図表6-10 一覧画面の検索結果の背景色変更

 

次の記事に続きます。

 

 

当ブログ内の連載記事

elmgrn.hatenablog.com

elmgrn.hatenablog.com