※本記事の内容は、2024年12月時点の情報に基づいて記載しています。
こんにちは、インフォシェア株式会社DX部の佐々木です。
Power Appsのキャンバスアプリには、「エクスポート」と「インポート」というコントロールがあります。
何ができて、どうようなときに使えるのか。制約はあるのか。
問い合わせがあったので調査しました。
※アプリ内のコントロールのインポート・エクスポートについて記事です。Power Appsキャンバスアプリ自体を別環境に移行するときなどに使うエクスポート・インポートとは異なります。

事務用品の発注記録アプリを作ってみました。
登録したデータをエクスポート&インポートできます。

キャンバスアプリ内で読み込めるテーブル型のデータ(コレクション、データソース、Gallery.AllItemsなど)をZipファイルとしてダウンロードします。
「データのエクスポート」ボタンをクリックすると、以下のようにエクスプローラが起動します。
保存場所を選択して「保存」で、ダウンロードが開始します。

colOrder.zipがダウンロードされました。

エクスポートコントロールでダウンロードしたZipファイルから、キャンバスアプリにテーブル型のデータをインポートします。
インポートできるのは、Power Appsキャンバスアプリのエクスポートコントロールで出力したZipファイルのみです。
一度登録した発注データを消して、「データをインポート」をクリックします。
エクスプローラが起動します。
先ほどダウンロードした colOrder.zip を選択します。

データがアプリにインポートされ、データテーブルに表示されました。

もちろん、このまま続きを入力することもできます。
エクスポートとインポートのコントロールでは、気にするべきプロパティは多くありません。
引き続き、事務用品発注記録アプリを例に見ていきます。
エクスポートコントロールのDataプロパティには、Zipファイルに落とす対象のテーブル型データを指定します。
コレクション、データソース、ギャラリーコントロールのAllItemsなどを指定することができます。
事務用品発注記録のエクスポートボタンの Dataプロパティには colOrder というコレクションを指定しました。

ボタンクリック時の動作ではありますが、Dataプロパティを設定していれば、OnSelectには何も指定する必要はありません。
インポートで選択したファイルは Self.Data で取得できます。
よって、ファイル内のデータをアプリ内で扱えるようにするために
OnSelectプロパティに以下のような関数を記載することができます。
ClearCollect(colData, Self.Data)
アプリ上のコレクションに、インポートしたデータが格納されます。
事務用品発注アプリでも同様の式を書いています。
一度インポートしてしまえば。colOrderは普通のコレクションと同じように扱えます。
Clear, Collect, Remove, Patch, LookUp, UpdateIf などの関数で操作することができます。

●ブラウザでのアプリ起動時はサポートされない
=モバイルアプリまたはデスクトップアプリから起動する必要がある。
●エクスポートしたファイルは、Power Apps以外で読み取ることができない。
●セキュリティの脆弱性にさらされ、データが漏洩する可能性がある。
=アプリ側でFilter関数などを使ってデータへのアクセスを絞っているようなケースではエクスポート機能の実装には慎重になるべきです。エクスポートされたファイルは、アプリやデータソースでの権限管理の世界を離れて、どこまでも独り歩きしうるからです。
エクスポートを実行すると、「data.zip」というファイルはデバイスにダウンロードされます。
data.zip 内のファイル構成は以下のとおり。
●data.json ←実際のデータがJSON型で格納されている
●header.json
●schema.json

data.jsonの中身はこんな感じ(↓)。

正直、それほど頻繁に使う機能ではないと思います。
調査した結果、どうやら以下のようなケースで使えるようです。
●同じデータソースや、同じ列構成のコレクションを持つ2つのキャンバスアプリ間でデータの受け渡しをする。
●オフライン時に入力した内容を取っておく。オンラインになってアプリを起動しなおしてから読み込んで入力を続ける。
インフォシェア株式会社では、お客様のニーズに合わせて、導入からカスタマイズ、トレーニングまで幅広くPower Platform支援サービスを提供しています!
お困りごとがあれば、まずは遠慮なくお問い合わせください。