Power Apps で作成した業務アプリのデータを、Excel などで活用したいと思ったことはありませんか?
しかし、Power Apps には標準のエクスポート機能がありません。そこで本記事では、Power Automate と連携し、Power Apps から CSV ファイルをエクスポートする手順をステップバイステップで解説します。
基本的には、テーブル データをいくつか選択し、JSON でエンコードして、それをアクションが組み込まれている Power Automate に送信するだけで、非常に簡単に実行できます。
Power Apps での準備:JSON形式データ作成
Power Apps で作成したデータを CSV ファイルとしてエクスポートするためには、まず Power Apps 側でエクスポートしたいデータを JSON 形式 に変換する必要があります。JSON (JavaScript Object Notation) は、軽量なデータ交換フォーマットであり、Power Automate でのデータ処理にも適しています。
ここでは、Power Apps の JSON() 関数を使用して、テーブルデータを JSON 形式に変換する手順を解説します。
ステップ 1: JSON 関数の利用
Power Apps には、テーブルデータを JSON 形式に変換するための便利な関数 JSON() 関数 が用意されています。この関数を利用することで、ギャラリーやデータテーブルなどのデータを簡単に JSON 文字列に変換できます。
JSON() 関数は、以下のように UpdateContext 関数などと組み合わせて使用し、JSON 形式の変数を Power Apps 内で作成します。
UpdateContext({ varJSON: JSON(YourTable, JSONFormat.IndentFour) })

上記の数式について、それぞれ解説します。
- UpdateContext({ varJSON: … }): UpdateContext 関数は、コンテキスト変数を更新するために使用されます。ここでは、varJSON という名前のコンテキスト変数を定義し、JSON 形式のデータを格納します。コンテキスト変数は、画面内でのみ利用可能な変数です。
- JSON(YourTable, JSONFormat.IndentFour): これが JSON 形式への変換を行う主要な関数です。
- YourTable: JSON 形式に変換したいテーブルデータを指定します。通常は、ギャラリーコントロールの Items プロパティや、コレクション名などを指定します。例えば、ギャラリーに表示されているデータをエクスポートしたい場合は、Gallery1.AllItems のように指定します。
- JSONFormat.IndentFour: JSON のフォーマットオプションを指定します。JSONFormat.IndentFour を指定すると、JSON 文字列が インデント付き で整形され、可読性が向上します。このオプションは省略可能で、JSON(YourTable) のように記述することも可能です。
例:ギャラリーのデータを JSON 形式に変換する
例えば、Gallery1 という名前のギャラリーに表示されているデータを CSV エクスポートしたい場合、ボタンの OnSelect プロパティに以下の数式を設定します。
UpdateContext({ varJSON: JSON(Gallery1.AllItems, JSONFormat.IndentFour) });
この数式を実行すると、Gallery1 のすべてのアイテム (AllItems) が JSON 形式に変換され、varJSON 変数に格納されます。
補足:複雑なデータテーブルの場合
JSON() 関数は、基本的なデータテーブルであれば問題なく JSON 形式に変換できますが、テーブルの構造が複雑な場合や、コントロール、高度なデータ型などが含まれる場合は、期待どおりの結果が得られない場合があります。
その場合は、JSON() 関数に渡す前に、AddColumns 関数や RenameColumns 関数などを活用して、JSON 形式に変換しやすいシンプルなテーブル構造にデータを整形する必要がある場合があります。
Power Automate フローの構築:CSVファイル作成と送信
Power Apps で JSON 形式に変換したデータを受け取り、実際に CSV ファイルを作成し、それをメールで送信する Power Automate フローを構築します。
Power Automate は、様々なアプリケーションやサービスを連携させ、ワークフローを自動化するためのクラウドサービスです。今回は、Power Apps から送信された JSON データを受け取り、CSV ファイルを作成し、メールで送信するという一連の処理を Power Automate フローとして構築します。
ステップ 2: Power Automate フローの作成と JSON 解析
まず、Power Automate で新しいフローを作成し、Power Apps から送信された JSON データを解析する設定を行います。

Power Automate のホーム画面 (ブラウザで Power Automate を開きます) から、左メニューの「作成」を選択し、「インスタント クラウドフロー」をクリックします。
「フロー名」に任意の名前 (例: PowerAppsCSVExportFlow) を入力し、「Power Apps (V2)」トリガーを選択して「作成」ボタンをクリックします。これにより、Power Apps から手動でフローを実行できるトリガーが作成されます。
作成されたトリガーアクション「Power Apps (V2)」をクリックし、詳細設定を展開します。「パラメーター」タブを開き、「入力の追加」から「テキスト」を選択します。
- 入力パラメーターの設定:
- パラメーター名: json_data (任意の名前で構いませんが、Power Apps 側と対応するように分かりやすい名前を推奨します)
- 説明: Power Apps から送信される JSON データ (任意の説明)
トリガーアクションの下にある「+」ボタンをクリックし、「アクションを追加」を選択します。アクションの検索窓に「JSON の解析」と入力し、「JSON の解析」アクションを選択します。
「JSON の解析」アクションの詳細設定を行います。
- コンテンツ: 解析したい JSON データを指定します。ここでは、直前のステップで設定した Power Apps トリガーの出力 (JSON データ) を選択します。「コンテンツ」入力欄をクリックすると、「動的なコンテンツを追加」ウィンドウが表示されるので、「トリガー」セクションから「json_data (Power Apps (V2) から)」を選択します。スキーマ: JSON データのスキーマ (構造) を定義します。スキーマを自動生成するには、「スキーマの生成」リンクをクリックし、表示されるダイアログに JSON データのサンプル を貼り付けて「完了」ボタンをクリックします。Power Apps の JSON() 関数で生成される JSON データのサンプルを貼り付けると、スキーマが自動的に生成されます。
ステップ 3: CSV テーブルの作成
次に、「JSON の解析」アクションで解析した JSON データから、CSV 形式のテーブルを作成します。

「JSON の解析」アクションの下にある「+」ボタンをクリックし、「アクションを追加」を選択します。アクションの検索窓に「CSV テーブルの作成」と入力し、「CSV テーブルの作成」アクションを選択します。
「CSV テーブルの作成」アクションの詳細設定を行います。
- 入力元: CSV テーブルの作成元となるデータを指定します。ここでは、「JSON の解析」アクションの出力 (解析された JSON データ) を選択します。「入力元」入力欄をクリックし、「動的なコンテンツを追加」ウィンドウで「JSON の解析」セクションから「本文」を選択します。列: CSV ファイルの列構造を指定します。「列」オプションは「自動」と「カスタム」から選択できます。
- 自動: JSON データに基づいて列が自動的に作成されます。カスタム: CSV ファイルに含める列を自由にカスタマイズできます。「カスタム」を選択した場合、キーと値のペアで列名と、対応する JSON データ内のフィールドを指定します。例えば、OrderDate 列に JSON データ内の orderDate フィールドをマッピングしたい場合は、キーに OrderDate、値に item()?[‘orderDate’] のような式を入力します。式を使用することで、データ形式の変換や加工も可能です。
ステップ 4: CSV ファイルをメールで送信
最後に、作成した CSV ファイルをメールで送信する設定を行います。

「CSV テーブルの作成」アクションの下にある「+」ボタンをクリックし、「アクションを追加」を選択します。アクションの検索窓に「メールを送信する (V2)」と入力し、「メールを送信する (V2)」アクションを選択します。
「メールを送信する (V2)」アクションの詳細設定を行います。
- 宛先: CSV ファイルを送信するメールアドレスを入力します。テスト送信の場合は、ご自身のメールアドレスを入力してください。件名: メールの件名を入力します (例: Power Apps CSV エクスポート )。本文: メールの本文を入力します (例: 添付ファイルにて CSV データをお送りします。ご確認ください。 )。添付ファイル: 「詳細オプションを表示する」をクリックし、添付ファイルに関する設定項目を表示させます。
- 添付ファイル – 名前: 添付ファイルの名前を入力します (例: Export.csv )。拡張子 .csv を忘れずに入力してください。添付ファイル – コンテンツ: 添付ファイルの内容 (CSV データ) を指定します。「添付ファイル – コンテンツ」入力欄をクリックし、「動的なコンテンツを追加」ウィンドウで「CSV テーブルの作成」セクションから「出力」を選択します。
応用例:SharePoint や OneDrive への保存
作成した CSV ファイルは、メールで送信するだけでなく、SharePoint ドキュメントライブラリや OneDrive などのクラウドストレージサービスに保存することも可能です。「メールを送信する (V2)」アクションの代わりに、SharePoint の「ファイルの作成」アクションや OneDrive の「ファイルの作成」アクションなどを利用することで、CSV ファイルを自動的に指定の場所に保存できます。
例:SharePoint に保存する場合
- 「CSV テーブルの作成」アクションの下に、「アクションの追加」から SharePoint の「ファイルの作成」アクションを追加します。
- 「サイトのアドレス」で CSV ファイルを保存したい SharePoint サイトを選択します。
- 「フォルダーのパス」で保存先のドキュメントライブラリとフォルダーを選択します。
- 「ファイル名」にファイル名 (例: Export.csv) を入力します。
- 「ファイル コンテンツ」に「CSV テーブルの作成」アクションの「出力」を指定します。
このように、Power Automate の豊富なコネクタを活用することで、CSV ファイルの保存先や利用方法を柔軟に拡張できます。
フローの保存
Power Automate フローの設定が完了したら、画面右上の「保存」ボタンをクリックしてフローを保存します。
これで、Power Automate フローの構築は完了です。次のステップでは、Power Apps からこのフローを実行し、CSV ファイルをエクスポートする設定を行います。
Power Apps から Power Automate フローを実行
Power Automate フローの構築が完了したら、Power Apps からそのフローを実行し、CSV エクスポート処理を開始できるように設定します。具体的には、Power Apps の画面にボタンを配置し、そのボタンがクリックされたときに、先ほど作成した Power Automate フローを実行するように設定します。
ステップ 5: Power Apps ボタンの OnSelect アクション設定
Power Apps から Power Automate フローを実行するには、PowerAutomate.Run() 関数を使用します。ここでは、ボタンコントロールの OnSelect プロパティにこの関数を設定し、ボタンクリック時にフローが実行されるようにします。
Power Apps Studio で、CSV エクスポート機能を実装したい画面を開き、「挿入」タブから「ボタン」コントロールを選択し、画面上の適切な場所に配置します。ボタンのテキストプロパティを「CSVエクスポート」など、分かりやすい名前に変更します。
追加したボタンを選択し、画面左上のプロパティドロップダウンから「OnSelect」プロパティを選択します。数式バーに以下の数式を入力します。Set(varFlowResult, PowerAppsCSVExportFlow.Run({ json_data: varJSON }));
Powerapps上記の数式について、それぞれ解説します。
Set(varFlowResult, …):
Set 関数は、グローバル変数を設定するために使用されます。ここでは、varFlowResult という名前のグローバル変数を定義し、Power Automate フローの実行結果を格納します。
グローバル変数は、アプリ全体で利用可能な変数です。フローの実行結果を Power Apps で利用しない場合は、Set 関数は不要で、PowerAppsCSVExportFlow.Run({ json_data: varJSON }); のみでも動作します。
PowerAppsCSVExportFlow.Run({ json_data: varJSON }):
これが Power Automate フローを実行する主要な関数です。
PowerAppsCSVExportFlow:
実行したい Power Automate フローの名前を指定します。Power Automate で作成したフローの名前 (PowerAppsCSVExportFlow は例です。ご自身で作成したフロー名に置き換えてください) を入力します。フロー名は、Power Automate フローの詳細画面で確認できます。
.Run(…):
Run() 関数は、指定された Power Automate フローを実行します。
{ json_data: varJSON }:
フローに渡す入力パラメーターを指定します。ここでは、json_data という名前のパラメーターに、Power Apps で作成した JSON 形式のデータが格納された変数 varJSON を渡しています。json_data は、Power Automate フローのトリガーで定義した入力パラメーター名と一致している必要があります。
数式の全体的な動作:
この数式は、ボタンがクリックされると、PowerAppsCSVExportFlow という名前の Power Automate フローを実行します。フロー実行時に、Power Apps で作成した JSON データ (varJSON 変数) を json_data という名前の入力パラメーターとしてフローに渡します。
フローの実行が完了すると、その結果 (今回はメール送信の成否など) が varFlowResult 変数に格納されます (今回は varFlowResult 変数は特に利用していません)。
補足:フローの実行結果の利用 (オプション)
上記の例では、フローの実行結果を varFlowResult 変数に格納していますが、特に Power Apps 側で結果を利用する処理は記述していません。フローの実行結果 (例えば、メール送信が成功したかどうかなど) を Power Apps 側で取得し、ユーザーにメッセージを表示したい場合などは、varFlowResult 変数を利用して処理を追加することができます。
例えば、フローが成功した場合に「エクスポートが完了しました」というメッセージを表示し、失敗した場合にエラーメッセージを表示する、といった処理が考えられます。
Power Apps と Power Automate の連携完了
これで、Power Apps のボタンから Power Automate フローを実行し、CSV エクスポート処理を行うための設定は完了です。
Power Apps アプリケーションを実行し、設定したボタンをクリックすると、Power Automate フローが実行され、CSV ファイルがメールで送信される (または設定した保存先に保存される) はずです。
もし、フローが正常に実行されない場合は、Power Automate の実行履歴を確認し、エラーが発生していないか、設定に誤りがないかなどを確認してください。
応用編:HTMLテーブルとしてメール本文に埋め込む (オプション)
これまでのステップでは、CSV ファイルをメールに添付して送信する方法を解説しました。この章では、さらに応用的なテクニックとして、CSV データ を添付ファイルではなく、メール本文に HTML テーブルとして埋め込む方法 を解説します。
HTML テーブルとしてメール本文に埋め込むことで、受信者はメールを開いた時点でデータの内容をすぐに確認できるため、利便性が向上します。
Power Automate フローの修正
HTML テーブル埋め込みを実現するには、Power Automate フローを少し修正する必要があります。具体的には、「CSV テーブルの作成」アクションを 「HTML テーブルの作成」アクション に置き換えます。
Power Automate フロー編集画面を開き、「メールを送信する (V2)」アクションの直前にある「CSV テーブルの作成」アクションを選択します。アクションメニュー (…) から「削除」を選択し、「CSV テーブルの作成」アクションを削除します。次に、削除したアクションがあった場所に「+」ボタンが表示されるので、クリックし、「アクションを追加」を選択します。アクションの検索窓に「HTML テーブルの作成」と入力し、「HTML テーブルの作成」アクションを選択します。
「HTML テーブルの作成」アクションの詳細設定を行います。
- 入力元: HTML テーブルの作成元となるデータを指定します。ここでは、先ほど削除した「CSV テーブルの作成」アクションと同様に、「JSON の解析」アクションの出力 (解析された JSON データ) を選択します。「入力元」入力欄をクリックし、「動的なコンテンツを追加」ウィンドウで「JSON の解析」セクションから「本文」を選択します。
- 列: HTML テーブルの列構造を指定します。「列」オプションは「自動」と「カスタム」から選択できます。「CSV テーブルの作成」アクションと同様に、必要に応じて「カスタム」を選択し、列をカスタマイズできます。
次に、「メールを送信する (V2)」アクションの設定を変更します。「本文」欄に、HTML テーブルを埋め込むための設定を行います。
- 「メールを送信する (V2)」アクションの本文設定: 「本文」入力欄をクリックし、「動的なコンテンツを追加」ウィンドウで「HTML テーブルの作成」セクションから「出力」を選択します。これにより、「HTML テーブルの作成」アクションで生成された HTML テーブルがメール本文に挿入されます。
Power Apps 側の変更は不要
HTML テーブル埋め込み方式に変更する場合でも、Power Apps 側の設定 (ボタンの OnSelect プロパティなど) は 変更する必要はありません。Power Apps から Power Automate フローに JSON データを送信する部分は、CSV 添付ファイル方式と HTML テーブル埋め込み方式で共通です。
まとめ
本記事では、Power Apps アプリケーションに CSV エクスポート機能を追加する方法をステップごとに解説しました。Power Apps 単体ではCSVエクスポート機能は提供されていませんが、Power Automate と連携することで、この課題を容易に解決できます。
Power Apps でデータを JSON 形式に変換し、Power Automate で CSV ファイルを作成、メール送信する一連の流れは、ローコードで迅速に実装可能です。さらに、HTML テーブルとしてメール本文に埋め込む応用テクニックも紹介しました。
これらの機能を活用することで、Power Apps で作成したデータをより手軽に外部へ共有し、ビジネスの現場で幅広く活用いただけます。Power Automate との連携により、Power Apps の可能性はさらに大きく広がります。ぜひ本記事を参考に、CSV エクスポート機能を実装し、Power Apps をより有効に活用してください。