Power AppsからPower Automateを実行したいのですが、実装が上手くいきませんぞ…
Power AppsとPower Automate連携の基本的な実装方法について紹介しますね。
この記事では、Power AppsとPower Automateを連携し、 アプリからフローを実行したり、実行したフローからアプリに返り値のデータを渡す基本的な実装方法を解説します。
- Power AppsとPower Automate連携の基本的な実装方法
- アプリからフローへ引数を渡す場合の注意点
- Power Automateの実行専用ユーザーの設定
YouTube動画で見たいかたは、こちらからどうぞ!
今回実現するケース
今回は以下のようなサンプルで、Power AppsとPower Automateの連携方法を解説します。

- Power Appsでプロジェクト一覧を表示する
- ギャラリーでチェックボックスをクリックすると、コレクションに選択した案件が追加される
- アプリで会議日程と、時間帯を入力し、会議を設定ボタンをクリックすると、Power Automateのフローが実行される
- Power Automateフローで、Teamsの会議を作成する
- 作成したTeams会議のリンクをPower Apps側に返し、会議リンクをクリックすると、Teams会議を開ける
今回はこのようなPower Apps-Power Automate連携の実装について解説していきます。
今回のケースの実装方法がわかれば、他のアプリ‐フロー連携にも使えそうですな。
Power AppsとPower Automateの連携方法
Power Automateの設定
まずは、Power AppsとPower Automateを連携する際の、Power Automate側の設定方法を解説します。
Power AppsからPower Automateを実行するトリガー
今回全体的には、以下のようなフローを作成しました。

Power AppsからPower Automateを呼び出す場合、「Power Appsコネクタ」のトリガー「Power Appsがフローを呼び出したとき」を使います。

Power Appsトリガーでは、アプリからフローへ何等かのデータを引数で渡すことができます。
データを渡したい場合は、「入力を追加する」からデータの種類を選択し、受け取るデータを複数設定することができます。

今回はプロジェクトID、会議日程、会議の開始時間、終了時間の4つの引数を受け取ります。
※プロジェクトIDが数値ではなくテキストなのは、今回、複数のIDをカンマ区切りで受け取るためです。
その後は任意のアクションを追加していきます。
今回の場合、引数で受け取ったカンマ区切りのプロジェクトIDを、一旦Split関数でアレイ型データにして、ループ処理を行います。

例えば、引数で、1,2というプロジェクトIDを受け取ったら、それぞれに適用するで、1、2、のIDがそれぞれループ処理される形になります。
そしてそれぞれのプロジェクトIDで、Power Appsのデータソースとなっている案件リストの情報を取得し、「文字列変数に追加」で案件一覧に情報を追加します。

追加した案件一覧の情報と、受け取った引数の会議日程、会議時間を元に、Teams会議を作成します。

最後に「Power Appsまたはフローに応答する」アクションで、Teams会議リンクをフローに返します。
これで、Power AppsからPower Automateを呼び出すフローができました!
Power AutomateからPower Appsにデータを返すアクション
最後にフローからPower Appsに何等かのデータを返したい場合は、「Power Appsまたはフローに応答する」アクションを追加し、任意の返り値を設定します。

このアクションは不要な場合は設定する必要がありません。
今回の場合も、Teams会議リンク等は必要であればSharePointリストに登録し、アプリ側からSharePointリストのデータを取得すればよいため、実際には不要かと思いますが、練習のため会議リンクを返り値として設定してみます。
これでPower Automateの設定は完了のため、名前を付けて保存しておきましょう。
Power Appsの設定
Power Autoamteの設定ができたら、次にPower Apps側の設定をしていきましょう!
Power Automateフローの追加
Power AppsからPower Automateを呼び出す場合、まずは「…(三点リーダー)」>「Power Automate」>「フローの追加」で、作成したフローを選択して追加します。

フローを追加したら、Power Appsからフローを呼び出すことができます。
アプリからフローを呼び出す実装
アプリからフローを実行したいプロパティ(今回の場合、会議を設定ボタンの「OnSelect」プロパティ)に、フロー名.Runという式を書くことで呼び出すことができます。

フロー名.Run()の、()内には、アプリからフローに渡す引数を設定していきます。
引数は、フローのトリガーで設定した引数を、順番に過不足なく設定します。
今回の場合、プロジェクトID、会議日程、開始時間、終了時間を、この順番で設定します。

実際には、以下のような感じで設定できます
プロジェクト進捗会議の通知フロー.Run(
Concat(colCheckedProject, ID, ","),
Text(DatePickerCanvas1.SelectedDate, "yyyy-mm-dd"),
DropdownCanvas1.Selected.Value,
DropdownCanvas1_1.Selected.Value
)
今回、チェックボックスをクリックしたとき、コレクション「colCheckedProject」にチェックした案件データを追加しています。

ギャラリーのチェックボックスの「OnCheck」「OnUncheck」プロパティでは、以下の関数式を設定しています。
Collect(colCheckedProject, ThisItem)
Remove(colCheckedProject, ThisItem)
コレクションの使い方については、以前の動画を参考にしてください。

第一引数のプロジェクトID(Concat(colCheckedProject, ID, “,”))では、コレクションに追加した案件データのIDを、カンマ区切りで繋げています。
プロジェクト進捗会議の通知フロー.Run(
Concat(colCheckedProject, ID, ","),
Text(DatePickerCanvas1.SelectedDate, "yyyy-mm-dd"),
DropdownCanvas1.Selected.Value,
DropdownCanvas1_1.Selected.Value
)
これは、コレクションのようなテーブル型のデータを引数としてフローに渡せないためです。
第二引数では、DatePickerで選択した日付を、yyyy-mm-ddのフォーマットで渡しています。
日付側のデータを引数として渡す場合、このようなフォーマットで渡す必要があります。
時間については、そのまま選択した値を文字列データとして渡しています。
Power AppsからPower Automateを実行する際の、引数の設定については以下の点に注意しましょう。
ちなみに、引数を必須にしない場合、フィールドをオプションにするという設定もあります。

オプション設定をした場合、設定した引数は一番最後に設定する必要があります。
またnull値を渡すことはできず、Power Appsから呼び出す際、引数として値を渡すか、設定しないかのどちらかになるので注意しましょう。
このオプションについては、いくつか注意点があるので、また別の機会に解説します。
フローからアプリへの返り値を受け取る場合、変数を設定する必要があります。
例えば以下のように、UpdateContext関数を使い、変数「locMtgUrl」でフローからの返り値(Teams会議のURL)を受け取ることができます。
UpdateContext(
{locMtgUrl:
プロジェクト進捗会議の通知フロー.Run(
Concat(colCheckedProject, ID, ","),
Text(DatePickerCanvas1.SelectedDate, "yyyy-mm-dd"),
DropdownCanvas1.Selected.Value,
DropdownCanvas1_1.Selected.Value
)
}
);
Notify("会議の登録に成功しました!", NotificationType.Success);
また必要であれば、フローの実行後に、Notify関数で、成功しました!とメッセージを出すこともできます。
フローからTeams会議リンクを返り値として受け取り、変数「locMtgUrl」に入れた後、以下のように会議リンクを表示できます。

locMtgUrl.会議リンク
この「ThisItem.会議リンク」の「会議リンク」は、フローの返り値として設定した変数名になります。

ちなみにこの会議リンクはコンテナ内に入れており、コンテナの「Visible」プロパティで、変数に値が入っていない場合は非表示になるように設定しています。

!IsBlank(locMtgUrl)
Power Appsからフローを実行し、返り値として会議リンクを受け取ったら、リンクが表示されるというわけです。
これで実装は完了ですな!早速アプリを実行してみますぞ!
それでは、アプリからフローを実行してみます。
以下のように案件をいくつか選択し、会議日程を選択、時間帯も選択した後、「会議を設定」ボタンをクリックします。

フローが実行され、Teams会議が作成されました。

Teams会議は適切な日時で設定され、本文にも、設定した案件内容が記載されています。

アプリでは、返り値としてTeams会議リンクを受け取り、左上のボタンが表示されます。

このようにして、Power AppsとPower Automateの連携が実装できます。
このようなアプリとフローの連携は、様々な場面で使うと思いますので、ぜひ今回のケースを参考に実装してみてください!
Power Automateの実行専用ユーザーとは?
Power Automateの実行専用ユーザーとは、各アクションの実行を、フローを実行したユーザーの接続で実行する設定になります。

Power Appsトリガーを使う場合等、手動で実行するフローは、実行専用ユーザーの設定ができます。

今回の場合、アプリから、会議設定ボタンをクリックしたアプリユーザーの権限で、他のアクションを実行することができます。
例えば、SharePoint リストへのデータ登録や、Teamsチャット投稿等を、アプリを利用したユーザーの権限で実行する場合があります。

実行専用ユーザーの接続にしない場合は、フローの所有者の中から、適切な接続を選択します。
実行専用ユーザーに設定した場合、アプリ起動時に、確認ダイアログで各コネクタへの接続の許可をする必要があるため注意しましょう。
さいごに
この記事では、Power AppsとPower Automateを連携し、アプリからフローを実行したり、実行したフローからアプリに返り値のデータを渡す基本的な実装方法を解説しました。
Power Automateでは、Power Appsコネクタを使うことで、Power Appsからフローを呼び出したり、Power Appsに返り値を渡したりできます。
Power Appsでは、フローのトリガーで設定した引数の順番に、過不足なく引数を設定する必要があります。
フローに渡す引数で、null値を渡すことはできないので、注意しましょう!