Microsoft Power App(以下、Power Apps)は、専門性の高い技術や開発の経験を持たなくてもビジネス ニーズに対応するモバイル アプリや Webアプリを比較的簡単に作成できるローコード ツールです。
Microsoft Teams(以下、Teams)では、Power Appsアプリを使用して、該当するチームのメンバー全体又は権限を有するメンバーが利用できるアプリを作成することができます。
本サイトでは、TeamsのPower Appsを利用してアプリを作成する上で役に立つちょっとしたテクニックを紹介しています。
はじめに
Power Apps を使用してデータソースを更新するには、フォームに設定したデータソースに対し、Submit関数を発行することで簡単に実現できます。
しかし、複数のデータソースを同時に処理する必要がある場合や、特定の条件下で複雑な更新処理を行う必要がある場合は、Power Automate を活用することで、より効率的にデータソースの更新処理を行うことが可能です。
本記事では、Runメソッドで Power Apps から Power Automate に値を引き渡し、その値を使用してDataverse for Teams(以下、Dataverse)のレコードを更新する方法を紹介します。
なお、この記事は、Power Apps を起動してアプリを作成し、スクリーン上にコントロールを配置するなど、ある程度 Power Apps の基本操作ができる方を対象にしています。Power Apps の基本操作から学びたい方は、別途関連サイトや書籍を参考にしていただくことをおすすめします。
さらに、Power Automate の基本操作も理解されていることをおすすめします。これにより、両プラットフォームの機能を最大限に活用し、業務の自動化とアプリケーション開発の両方において、より効果的な結果を得ることができます。
データソースの準備
ここではデータソースにDataverse を利用します。Power Apps のビルドメニューからデータテーブルを作成してアプリに追加してください。
Power AutomateによるDataverseレコードの更新
次のとおり、Power Apps のビルドメニューからデータソースのレコードを更新するフローを Power Automate で作成してアプリに追加します。
Power Automate では、「Power Apps」トリガーを選択して、Power Apps からのデータを受け取るように設定します。例えば、「”野菜ID”,”和名”,”英名”,”原産地”」といったフィールドをもつ野菜情報を更新する場合、Power Automateでは入力値を次のとおり設定します。
続いて、与えられた野菜IDの値によって条件分岐を設定します。例えば、「行を一覧にする」アクションを使用して、レコードが存在する場合には更新処理、存在しない場合には新規登録を行います。
- 新規登録の場合:「新しい行を追加する」アクションを使用して、Dataverse に新しいレコードを追加します。このアクションでは、作成するテーブルとそのフィールドの値を設定します。
- 更新処理の場合:「行を更新する」アクションを使用して、Dataverse のレコードを更新します。このアクションでは、更新するテーブルとレコードの一意識別子(通常テーブル名と同じ表示名の列をアプリ側で取得するなど)を指定し、更新するフィールドとその値を設定します。
- エラーハンドリング:実際のアプリケーションでは、フローのなかで「エラーが発生したとき」の処理を設定することがあります。特にレコードの追加、更新を扱う際にはデータの一貫性や整合性の欠如を防ぐために適切なエラーハンドリング処理を行うことが重要です。
Power Automateでは、「エラーが発生したとき」のアクションを設定することができます。例えば、Dataverse for Teamsのレコードの新規作成または更新時にエラーが発生した場合、エラーメッセージをPower Appsに返すアクションを設定します。Power Appsでは、このエラーメッセージを受け取り、ユーザーに表示します。
Power Appsからフローを呼び出す
Power AppsからPower Automateで作成したフローを呼び出すには Runメソッドを使用します。
アプリにフローを呼び出すボタンを追加して、OnSelectプロパティにコードを記述します。
次のとおり記述するとフローに値を引き渡すことができます。これにより、Power Automateのフローでレコードの追加または更新処理とエラーハンドリングを行い、Power Appsにエラーメッセージを返すことができます。
// 新規作成の場合 Set(response, myFlow.Run(YasaiID,Wamei,Eimei,Gensanchi,"")); // 更新の場合 Set(response, myFlow.Run(YasaiID,Wamei,Eimei,Gensanchi,GUID)); // エラー処理 If(!IsBlank(response.myreturn), Notify(response.myreturn, NotificationType.Error));
おわりに
以上が、Power AppsからPower Automateに値を引き渡し、その値を使用してDataverseのレコードを追加または更新する具体的な手順です。これらの手順を適切に実行することで、ビジネスプロセスを自動化し、データを効果的に管理することができます。エラーハンドリングを適切に設定することで、システムの信頼性を高め、問題が発生したときに迅速に対応することが可能になります。
この記事が皆様の問題解決に役立つことを願っています。何か質問があれば、お気軽にコメントでお知らせください。