はじめに
Power Apps でデータソースにデータを登録した後、通知や承認処理を行うことが良くあり、以下の二つの方法が考えられます。
① Power Apps から Power Automate を呼んで、データを登録した上で、通知や承認処理もする
② Power Apps でデータ ソースにデータを登録し、データが登録されたことをトリガーに Power Automate が動作して通知や承認処理をする
個人的には、慣れない方にとっては、② の方が簡単な気がします。
しかし、② を利用した場合、メールや Teams での送信元が全てフローを作成したユーザーになってしまいます。
例えば、以下のようなフローで休暇の連絡通知をチームの Teams のチャネルに投稿する場合、投稿者が全てフローの作成者になり、紛らわしいため、送信元をアプリ利用者自身にしたいという場合があります。
※フローの作成者が testuser002 で、休暇の連絡者が testuser001 です
この場合は ① の方法を利用するのですが、今回は、出来るだけ簡単に実現したい場合に私が良く利用する方法について説明します。
実装方法
まず、今回は、以下のような SharePoint リストを利用します。
Power Apps でアプリを作成し、フォーム コントロールを利用し、ボタンを押した際 (OnSelect
プロパティを利用)、SubmitForm
を利用してデータの登録をします。
そして、フォームの OnSuccess
プロパティにて以下のような処理を書きます。
'休暇申請フロー-2'.Run(FormNewRequest.LastSubmit.ID);
Notify(
"新規申請処理が成功しました。承認されるまでしばらくお待ちください",
NotificationType.Success
);
Navigate(ScreenTop);
ResetForm(FormNewRequest)
ポイントは以下の箇所です。
こちらは、該当のフォームで直前に登録したアイテムの情報を意味します。
※SharePoint リストの場合、ID が一意な情報となるため、今回は、ID だけを Power Automate に渡します (渡す情報が少ないのは楽ですね)
FormNewRequest.LastSubmit.ID
フォームをリセットする前に Power Automate フローを呼びます。LastSubmit.ID の情報もリセットされてしまい、フローが正しく動作しなくなるためです。
こちらの LastSubmit、以下のブログなどでも紹介されており、何かと便利です。(よく見ると私が Power Apps を触り始めるよりはるかに前の記事ですね。ありがとうございます。)
Power Automate 側の実装は以下のような感じです。
Power Apps から受け取る情報は ID だけでいいのでとても楽です。
この ID の情報を元に、SharePoint リストから直前に登録したデータを取得して動的なコンテンツとして利用できます。(上記では、ステータスを更新するため、[項目の更新] アクションを動的なコンテンツとして再利用しています)
正しく動作したようです。(タイトルのユーザー名はいらなくなりますね)