IT Hands-on Lab

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

【Power Apps】マネージャー確認機能付き 執務日報アプリ カスタマイズ

PowerApps マネージャー確認機能付き 執務日報アプリ カスタマイズ

前々回および前回の記事で、Power Appsのマネージャー確認機能付き(Teamsアダプティブカードによる通知・応答を含む)執務日報アプリの作成例を紹介しました。今回は、このアプリのカスタマイズ例をいくつか紹介します。
  • 操作環境:
    • OS:Windows 11
    • Webブラウザー:Edge
  • 使用プラン:Microsoft 365 Business Premium
*この記事は、前々回および前回の記事で作成した執務日報アプリに手を加える形でのハンズオンとなります。前々回および前回の記事をご覧になっていない場合は、先にそちらをご覧いただく方が分かりやすいです

 

 

一覧画面:検索条件の委任の問題解消

元の執務日報アプリでは、一覧画面の検索条件で委任の問題が発生していました。

 

画面イメージのように、検索条件の報告者をコンボボックスからドロップダウンリストに変更することで(複数選択はできなくなり、単数選択になります)、委任の問題を解消できます。

図表1-1 コンボボックスからドロップダウンへの変更

図表1-1 コンボボックスからドロップダウンへの変更

 

報告者ドロップダウンの設定は以下の通りとしました。

  • AllowEmptySelectionプロパティ:true
  • Itemsプロパティ:
    Distinct(Sort(
        Filter([@執務日報],User().FullName = reporter || User().FullName = manager)
    , reporter, SortOrder.Ascending),reporter)
    *元々登録済データから重複を除いて全件取得していましたが、検索結果においてアプリユーザーが報告者またはマネージャーのデータに絞り込んでいるため、同じ条件に見直しました
  • Tooltipプロパティ:"単数選択/再選択で解除"

図表1-2 ドロップダウンの設定

図表1-2 ドロップダウンの設定

 

確認依頼:アダプティブカード応答に差戻し追加

動作イメージ

元の執務日報アプリにおいて、マネージャーによる確認処理は確認済にする機能しかありませんでした。

 

ここではアダプティブカードの応答に差戻し機能を追加してみます。

*マネージャーが差戻しを選択すると、ステータスが確認待から下書きに変わり、報告者にTeams通知が行われます

図表2-1 Teamsアダプティブカードへの差戻し機能追加

図表2-1 Teamsアダプティブカードへの差戻し機能追加

 

参考まで、ステータスの遷移イメージを纏めておきます。

図表2-2 ステータスの遷移イメージ

図表2-2 ステータスの遷移イメージ

 

アプリの変更

報告者へのTeams通知を行うため、詳細画面の確認依頼アイコンのOnSelectプロパティ内のフロー呼出しの引数として、報告者のEmailを追加します。

図表2-3 差戻し機能追加におけるアプリ変更

図表2-3 差戻し機能追加におけるアプリ変更

 

フローの変更

ここからはフローの変更を行います。

 

まずはフロー全体を示します。
変数statusを用意し、マネージャーのアクションに応じてこの変数に値(確認済/下書き)を格納し、これに応じてSharePointリストのステータスの値を更新し、差戻しの場合は報告者にTeams通知を行っています。

図表2-4 差戻し機能追加におけるPowerAutomateフロー変更

図表2-4 差戻し機能追加におけるPowerAutomateフロー変更


この後、追加・変更するステップの設定を紹介します。

 

[Power Apps (V2)]ステップについて、以下の通り変更します。

  • マネージャーのEmail:引数名の変更
  • 報告者のemail:追加
    • 種類:email
    • 引数名:reporter_email

図表2-5 PowerAutomateフロー変更(PowerAppsからの引数)

図表2-5 PowerAutomateフロー変更(PowerAppsからの引数)

 

[変数を初期化する-adaptive-card]ステップについて、”actions”内に差戻しボタン用の記述を追加します。

    {
      "type": "Action.Submit",
      "title": "差戻し",
      "id": "sendback-button"
    },

図表2-6 PowerAutomateフロー変更(変数初期化adaptive-card)

図表2-6 PowerAutomateフロー変更(変数初期化adaptive-card)

 

[変数を初期化する-status]ステップを追加し、以下の通り設定します。

  • ステップの種類:[組み込み>変数>変数を初期化する]
  • 名前:status
  • 種類:文字列
  • 値:確認済

図表2-7 PowerAutomateフロー変更(変数初期化status)

図表2-7 PowerAutomateフロー変更(変数初期化status)

 

[条件-差戻時は変数statusを更新する]ステップを追加し、以下の通り設定します。

  • ステップの種類:[組み込み>コントロール>条件]
  • 左辺(変数):submitAction
  • 式:次の値に等しい
  • 左辺:sendback-button
*submitActionは、アダプティブカード内の確認済ボタンや下書きボタンを押すと、それらのidの値が格納されます

さらに、[はいの場合]ステップ内に[変数の設定-status]を追加し、以下の通り設定します。

  • ステップの種類:[組み込み>変数>変数の設定]
  • 名前:status
  • 値:下書き
*差戻しボタンが選択された場合、変数statusを差戻しに更新します(なお、初期値は確認済です)

図表2-8 PowerAutomateフロー変更(条件)

図表2-8 PowerAutomateフロー変更(条件)

 

[項目の更新]ステップの[status Value]について、固定値"確認済"をを変数statusに変更します。

図表2-9 PowerAutomateフロー変更(SharePointリスト項目の更新)

図表2-9 PowerAutomateフロー変更(SharePointリスト項目の更新)

 

[条件-差戻時は報告者にTeams通知する]ステップを追加し、以下の通り設定します。

  • ステップの種類:[組み込み>コントロール>条件]
  • 左辺(変数):submitAction
  • 式:次の値に等しい
  • 左辺:sendback-button

さらに、[はいの場合]ステップ内に[チャットまたはチャネルでメッセージを投稿する]を追加し、以下の通り設定します。

  • ステップの種類:[標準>Teams>チャットまたはチャネルでメッセージを投稿する]
  • 投稿者:フローボット
  • 投稿先:フローボットとチャットする
  • Recipient(変数):reporter_email
  • メッセージ:(画面イメージ参照)

図表2-10 PowerAutomateフロー変更(条件,Teams投稿)

図表2-10 PowerAutomateフロー変更(条件,Teams投稿)

 

アプリ:マネージャーのコメント入力簡易化・差戻し追加

動作イメージ

元の執務日報アプリでは、アプリ上でマネージャーがコメント入力した上で確認処理を行う場合、編集画面でコメント入力してから詳細画面で確認処理を行う手順でした。

 

画面遷移が煩わしいので、詳細画面で確認処理アイコンを選択した時にコメント入力できるように変更します。その際、差戻しも行えるようにします。
画面イメージはマネージャーがアプリ上で確認処理を行った時(確認済にした場合)の流れです。

図表3-1 動作イメージ(マネージャーによる確認処理)

図表3-1 動作イメージ(マネージャーによる確認処理)

 

画面イメージはマネージャーがアプリ上で確認処理を行った時(差戻しを行った場合)の流れです。

図表3-2 動作イメージ(マネージャーによる差戻し処理)

図表3-2 動作イメージ(マネージャーによる差戻し処理)

 

アプリの変更(既存部品の変更)

左側ツリービューの[DataScreen1]を選択し、[OnVisible]プロパティに以下を追加します。

//確認処理制御用の変数を初期化
UpdateContext({ loc_confirm_status:"未選択", loc_manager_comment:DataCardValue8.Text });
*loc_confirm_statusは確認処理アイコンを選択したかどうかの判定用変数で、確認処理用のコンテナーの表示制御で使用します
*loc_manager_commentは確認処理用のコンテナー上で入力させるマネージャーコメント用の変数です。登録済の値(この例ではDataCardValue8)がある場合は、この値を初期値とします

図表3-3 アプリ変更(詳細画面のOnVisibleプロパティ)

図表3-3 アプリ変更(詳細画面のOnVisibleプロパティ)

 

左側ツリービューの[DataScreen1>DetailForm1]を選択し、[Y]プロパティを以下の通り変更します。

If(loc_confirm_status="選択済",RectQuickActionBar2.Y + RectQuickActionBar2.Height+286,RectQuickActionBar2.Y + RectQuickActionBar2.Height)
*286はこの後追加する確認処理用のコンテナーの高さに相当します(デザインに応じて適宜調整)。確認処理アイコンを選択した時に確認処理用のコンテナーを表示し、項目値の表示開始位置がコンテナーよりその下になるようにしています

図表3-4 アプリ変更(詳細フォームのYプロパティ)

図表3-4 アプリ変更(詳細フォームのYプロパティ)

 

確認処理アイコンを選択し、以下の通り変更します。

  • OnSelectプロパティ:
    //確認処理制御用の変数を初期化
    UpdateContext({ loc_confirm_status:"未選択", loc_manager_comment:DataCardValue8.Text });
    *OnVisibleプロパティと同じ設定です
  • Tooltip:"確認処理へ(確認済/差戻し)"

図表3-5 アプリ変更(確認処理アイコンの設定)

図表3-5 アプリ変更(確認処理アイコンの設定)

 

アプリの変更(確認処理用部品の追加)

左側ツリービューの[DetailScreen1]を選択した状態で、上メニューの[挿入>レイアウト>コンテナー]を選択します。
左側ツリービューで今追加されたコンテナーを選択し、上メニューの[挿入]を選択し、以下の部品を追加します。

  • テキストラベル
  • テキスト入力
  • ボタン(3個)

図表3-6 アプリ変更(確認処理用部品の追加)

図表3-6 アプリ変更(確認処理用部品の追加)

 

追加した部品の部品名、配置、各種設定を調整します。なお、各ボタンのOnSelectプロパティの設定は後述します。

部品名
(部品の種類)
Height Width X Y その他の設定項目
Container1(コンテナー) 286 280 13 99 Fill:RGBA(186, 202, 226, 1)、Visible:If(loc_confirm_status="選択済",true,false)
btnCancel(ボタン) 50 195 432 223 Size:18、Text:"キャンセル"
btnNG(ボタン) 50 195 220 223 Size:18、Text:"差戻し"
btnOK(ボタン) 50 195 12 223 Size:18、Text:"確認済"
txtManagerComment(テキスト入力) 154 616 12 58 Default:loc_manager_comment、Mode:TextMode.MultiLine、Size:16
lblManagerComment(テキストラベル) 46 616 12 12 Align:Align.Center、Size:16、Text:"確認処理を行います。コメントがあれば入力してください。"
図表3-7 アプリ変更(確認処理用部品のレイアウト)

 

キャンセルボタンを選択し、[OnSelect]プロパティを以下の通り変更します。

//確認処理制御用の変数を初期化
UpdateContext({ loc_confirm_status:"未選択", loc_manager_comment:DataCardValue8.Text });
*OnVisibleプロパティと同じ設定です

図表3-8 アプリ変更(キャンセルボタンの設定)

図表3-8 アプリ変更(キャンセルボタンの設定)


差戻しボタンを選択し、[OnSelect]プロパティを以下の通り変更します。

//確認処理(ステータス更新:差戻し(下書き状態へ))
Patch(執務日報,
    LookUp(執務日報,ID=Value(DataCardValue14.Text)),
    {   status:{Value:"下書き"},
        manager_comment:txtManagerComment.Text }
);
//確認処理制御用の変数を初期化
UpdateContext({ loc_confirm_status:"未選択", loc_manager_comment:DataCardValue8.Text });

図表3-9 アプリ変更(差戻しボタンの設定)

図表3-9 アプリ変更(差戻しボタンの設定)


確認済ボタンを選択し、[OnSelect]プロパティを以下の通り変更します。

//確認処理(ステータス更新:確認済)
Patch(執務日報,
    LookUp(執務日報,ID=Value(DataCardValue14.Text)),
    {   status:{Value:"確認済"},
        manager_comment:txtManagerComment.Text }
);
//確認処理制御用の変数を初期化
UpdateContext({ loc_confirm_status:"未選択", loc_manager_comment:DataCardValue8.Text });

図表3-10 アプリ変更(確認済ボタンの設定)

図表3-10 アプリ変更(確認済ボタンの設定)

 

簡易的なワークフローアプリにおいて、確認者のコメント入力とアクション選択を行うインターフェースの参考になれば幸いです。

 

 

当ブログ内の連載記事

elmgrn.hatenablog.com

elmgrn.hatenablog.com