今回の記事は先日投降した「PowerAppsのギャラリーをCSVでエクスポートする方法【PowerAutomate】」の続きの内容となります。
CSVファイルを作成している前提での話となりますのでもし理解できないところがあれば併せて読んでいただければと思います。
SharePointに作成する場合との相違点
まず最初に、SharePointにファイルを作成するだけの状態をローカルフォルダにダウンロードするように変更するために必要な変更箇所を先に明示します。
- PowerAutomate
- 作成したファイルのリンクではなくダウンロードリンクを取得するように変更
- PowerApps
- ダウンロードするボタンにダウンロードリンクを返すような関数の追加
PowerAutomateの変更
まずはSharePointに作成したファイルのダウンロードリンクを作成します。こちらはSharPoint上に存在するファイルのパスからダウンロードURLを作成することができます。
ファイルのパスを使用したダウンロードURLは次のような形になります。
[サイトURL]/_layouts/download.aspx?SourceUrl=[ファイルのパス]
PowerAutomateで作成する場合には、ファイルの作成前に「変数の初期化」のアクションを使って先に定義することで日付と日時を利用したオリジナルなファイル名を使用しつつ、ダウンロードURLの作成が可能です。
作成したダウンロードURLは「PowerAppsまたはフローに応答する」のアクションを使用することで、PowerAppsにURLを返却することができます。
PowerAppsから入力を受け取ったときと操作が似ていますが、こちらではテキストで出力の追加をしてタイトル(PowerAppsでURLを受け取るときに指定する値)を設定し値の部分には先程作成したダウンロードURLを設定してください。
このページでの説明はタイトルにExportURLとして説明していきます
PowerAppsの変更
こちらではAutomateで作成したURLを受け取り、Download関数に設定することでファイルのダウンロードを実装することができます。
まずは受け取ったURLを変数として保持できるようにフローの実行の部分の関数を修正します。フローの実行はこちらのような関数で実行していました。
Flow.Run(Flow_json)
※ここではフローに渡す値をFlow_Jsonとしています
このフローを実行して返却された値を変数に格納したいため次のように修正します。
Set(ExportURL,Flow.Run(Flow_json))
最後にフローから受け取ったURLをダウンロード関数に渡すような関数を記載します。
Download(ExportURL.exporturl)
最後に
このように修正することでアプリの再生でダウンロードボタンを押してファイルをローカル環境に保存することができるようになります。その後の処理として、ファイルのダウンロード後はSharePointからデータを削除しても手元の端末には残るので、作成したファイルを削除するようなフローを追加したりしてもいいと思います。この辺りの追加実装も必要に応じてぜひやってみてください。
ここまで読んでいただきありがとうございました。