Power Apps で CSV ファイルをインポートする
はじめに
Power Apps から CSV ファイルのデータを読み込みたい場合があります。Power Apps には インポート および エクスポート のコントロールがありますが、CSV 形式には対応していません。
これを実現するには、Power Apps の 添付ファイル コントロールを使ってファイルを読み込み、Power Automate で解析する方法を利用します。
実行手順
Power Automate
最初に Power Apps から呼び出す Power Automate を作成します。全体像は次のとおりです。

トリガーではパラメーターとして ファイル コンテンツ を受け取るようにします。これは V2 のトリガーでのみ使用できます。

選択 アクションで取得したデータを解析し、JSON 形式に変換します。

開始 の式は以下のとおりです。
split(replace(replace(decodeBase64(triggerBody()?['file']?['contentBytes']), decodeUriComponent('%EF%BB%BF'), ''), decodeUriComponent('%0D'), ''), decodeUriComponent('%0A'))
少し複雑ですが、次の処理を行っています。
- BOM および CR を削除
- LF で分割
マップ のそれぞれの値にはカンマ区切りした値を設定します。
split(item(), ',')?[0]
応答 アクションで結果を返します。通常、Power Apps に結果を返すときは Power Apps に応答する アクションを使いますが、応答 アクションを使うことで高度な結果を返すことができます。今回は 選択 アクションの結果を返却します。Power Apps から結果を認識するためには JSON スキーマを指定する必要があります。

Power Apps
Power Apps には 添付ファイル、ボタン、動作確認用の データ テーブル コントロールを配置します。

添付ファイル コントロールは 挿入 からは追加できません。適当な SharePoint リストをデータ ソースとしてフォームを追加すると 添付ファイル コントロールが追加されるので、それをコピーします。コピーしたらフォームは削除してかまいません。また、画像の追加 コントロールを使うこともできます。
ボタン コントロールの OnSelect プロパティでは、添付ファイル コントロールの値をパラメーターとして Power Automate を呼び出します。実行結果は UpdateContext で変数に格納します。
UpdateContext(
{
Items: CSVUploader.Run(
{
file: {
name: First(FileUpload1.Attachments).Name,
contentBytes: First(FileUpload1.Attachments).Value
}
}
)
}
)
データ テーブル コントロールの Items プロパティに Items 変数を設定します。
実行結果
実行すると、CSV ファイルを読み込んで表示できていることが確認できます。

おわりに
いくつかテクニックが必要ですが、実用的な方法です。注意点として、応答 アクションはプレミアム アクションであるため、Power Apps の有償ライセンスが必要です。
Discussion