目的
点検簿のレコード(InspectionLog)のうち「承認申請=いいえ」のものを Power Apps でプレビューし、まとめて申請。
Power Automate で一次承認→最終承認の段階承認を実施し、結果を InspectionLog の 承認ステータス(Status 列)に反映。
メールに申請一覧を添付。
構成:
SharePoint リスト確認
InspectionLog(点検簿): Application(承認申請:はい/いいえ), Status(選択肢)
ApproverList(承認者リスト): Title=承認者種別, level(数値), email(ユーザー/メール)
Power Apps:EditScreen1 に btnApproval(プレビュー), btnRun(申請実行) を配置
Power Automate:トリガー Power Apps → 承認者取得 → HTML 添付作成 → 開始して承認を待機(一次)→(承認なら)開始して承認を待機(最終)→ InspectionLog 更新 → 通知
左ペインで「ツリービュー」 → + 新しい画面
種類は「スクロール可能な画面」を選択
名前を scrPreview に変更(プロパティウィンドウで変更)
ラベルのプロパティの以下の項目を入力
Text = "申請対象一覧"
Align = Align.Left
画面上部メニューの「挿入」→「レイアウト」→「データテーブル」を選択
データテーブルが scrPreview に配置されたら、追加されたDataTable1の下記プロパティに以下を入力
Items = Filter(点検簿,承認申請=false)
HedingSize = 15
Size = 18
※Filter(点検簿,承認申請=false)→点検簿リストの承認申請列=falseで申請されてないデータのみ抽出する
※データテーブルの登録日時列(_C)1のプロパティのTextを下記のように変更すると表示書式を変更できる
Text(ThisItem.登録日時,DateTimeFormat.LongDateTime)
↓
Text(ThisItem.登録日時,DateTimeFormat.ShortDateTime24)
画面上部のタイトルバーまたはギャラリーの下に「ボタン」を追加
名前を btnRun に変更
Textプロパティに"申請" に変更( 📝 や 📩 、✅ 、➕ 、⬆️ のようなアイコンでも可)
OnSelectプロパティに以下の式を挿入
// 手順1: 必要な列だけを選択し、JSONに変換する
Set(
varPayload,
JSON(
ShowColumns(
Filter(点検簿, 承認申請 = false),
ID, // ID
Title, // 機器番号
Created, // 点検日
Class, // 階層
DeviceName, // 機器名称
UMU, // 設備異常有無
Ammeter, // 電流計
Voltmeter, // 電圧計
Pressure, // 圧力計
Noise, // 異常音
Comment // 備考
),
JSONFormat.IndentFour
)
);
// 手順2: Power Automateフロー 'paSubmitInspection' を実行し、
// 引数としてJSONデータを渡す
paSubmitInspection.Run(
varPayload,
User().FullName,
User().Email
);
Notify("申請フローを開始しました。", NotificationType.Success);
※上記の式の意味
1️⃣ PowerAppsで「申請」ボタンを押す=Onselect
↓
2️⃣ 表示中のデータ(DataTable1.AllItems)をコレクションcolPreview (申請プレビューに使う一時テーブル)にまとめる
↓
3️⃣ そのコレクションを JSON() で文字列化
※JSONにする理由:データをPowerAutomateに渡すためにはJSON式にする必要があるため
ShowColumns関数:データから必要な項目を選択する関数。
JSON 関数に渡された値はメディアを含んでおり、既定ではサポートされていないため、必要な項目を選択する必要がある。
varPayload:JSON化された文字列
↓
4️⃣ Power Automate フロー(=paSubmitInspection)を呼び出す
paSubmitInspection.Run(
varPayloadvarPayload,
User().FullName,
User().Email
);
varResult:フローが PowerApps に返した結果(成功/エラー/メッセージなど)を保持
User().FullName: 現在のユーザーの氏名
User().Email : 現在のユーザーのメールアドレス
※User()関数は、現在PowerAppsを実行しているユーザーの情報を取得するための組み込み関数
5️⃣ お知らせ文を表示
※Power Automateで設定する変数
paSubmitInspection=この後作成するPowerAutomateのフロー名。引数は3つ
paSubmitInspection.Run()=paSubmitInspectionフロー呼び出し関数
※この時点でまだ、PowerAutomateのフローpaSubmitInspectionを作成してないのでエラーが出てる
画面上部のタイトルバーまたはギャラリーの下に「ボタン」を追加
名前を btnNo に変更
Textプロパティに"キャンセル" に変更( 🚫 や ❌ 、↩️ 、⛔ 、🔙 のようなアイコンでも可)
OnSelectプロパティに以下の式を挿入
Back()