
こんにちは、あおいです。
個別株が飽きて最近CDF取引とコモディティにハマってます。コモディティは金・プラチナから始めるのが無難です。
さて、前回のブログではお伝えしきれなかったダウンロード機能の詳細な方法について紹介をしていきます。
【第1回 実務で役立つアプリ開発】Power Apps+Automateでファイルを特定の命名規則で生成してローカルダウンロードする | cloud.config Tech Blog
早速ですが、前回のハンズオンで作成した案件一覧から適当な案件を選択してダウンロードボタンを押してみてください。


きちんとローカルダウンロードされましたね。
それではもう一度同じ案件名を選択した状態でダウンロードボタンを押してみましょう。
ダウンロードが失敗しPower Appsにエラーが表示されているはずです。
Power Automateのフロー実行失敗が原因です。Power Automateでは同じ名前のファイルが既に存在する場合はファイル作成出来ない仕様になっています。

ちょっと困りますよね。。。
2回・3回と複数に渡ってファイルをダウンロードしたい場合は必ずあるでしょう。
いくつか解決策は考えられます。
例えば[日時]コネクタの[タイムゾーンの変換]アクションの書式設定文字列で yyyyMMdd に HH:mm:ss を分秒単位の時間を追加します。このように分秒単位の細かい時間が一意識別子の役割を果たし、ファイル作成時にファイル名が重複することは避けられます。

しかし、命名規則はあくまでも[ダウンロードした日付(YYYYMMDD)_取引先社名_案件名.pptx]です。命名規則を安易に変更するのは業務上あまり好ましくありません。
こんな時は[実行条件の構成]を使いましょう!
まず、path変数の設定をした後続フローに[変数の設定]アクションを選択します。path変数に前アクションと同じ値を入力します。同じアクションを区別するためにも、三点リーダーを押して名前の変更をします。
今回は[新規作成ファイル:URL][既に存在するファイル:URL]と適当な名前を付けます。
※[タイムゾーンの変換]アクションの書式設定文字列を yyyyMMdd にするのを忘れずに!


ここで[実行条件の構成]を使います!
[既に存在するファイル:URL]アクションの三点リーダーを押して[実行条件の構成]を選択してください。そして、[スキップされます]のチェックボックスにチェックをしてください。
同様に、最後のアクションである[Power AppsにURLを返す(名前変更前のアクション名:PowerApp または Flow に応答する)]アクションの三点リーダーを押して[実行条件の構成]を選択してください。そして、[成功しました][スキップされます]のチェックボックスにチェックをしてください。


この意味を説明すると、[SharePoint:ファイル作成]アクションで新規ファイル作成が成功したら、[新規作成ファイル:URL]アクションでpath変数の値(https://~.pptx)をPower Appsに返します。これは1回目にダウンロードボタンを押した場合です。
[既に存在するファイル:URL]アクションの実行タイミングは[SharePoint:ファイル作成]アクションが失敗して[新規作成ファイル:URL]がスキップされた場合のみです。これは2回目以降にダウンロードボタンを押した場合です。
[実行条件の構成]の設定はこれで終了です。
フローを接続して、ダウンロードボタンのOnSelectプロパティに以下の数式を入力します。
ダウンロードボタンを複数回押してPower Automateのフローを走らせてみましょう!実行後、ローカルPCに同じ命名規則で複数のファイルがダウンロードされました!


Power Automateの実行履歴を確認すると以下のようになっています。
1回目のダウンロードと2回目以降のダウンロードによって実行条件の構成が起動しています。


また、こんな意見もあるかもしれません。
「同じ命名規則で何回もダウンロード出来てしまったら、どのファイルが最新版なのか分からない。」
そんな時も[実行条件の構成]を使いましょう!
と言っても、やることは先ほどの設定とほぼ変わりません。後続の[変数の設定]アクションの値を変更するだけです。今回は適当な値[no]を入力します。
あとは、フローを接続してダウンロードボタンのOnSelectプロパティに以下の数式を入力します。
ファイルがローカルダウンロードされたかを利用者に分かるようにしなければいけませんので、Notify関数でPower Apps上の画面にダイアログを表示します。


ダウンロードボタンを複数回押してPower Automateのフローを走らせてみましょう!実行後、ローカルPCにファイルがダウンロードされました!また、2回目以降にダウンロードボタンを押すと、実行条件の構成が起動してダイアログがきちんと表示されています!


前回のブログの続編ということでダウンロード機能の詳細な方法について紹介させていただきました。
実際の開発でこの方法でダウンロード機能を作成している中で、「実行条件の構成が意外と便利だなぁ~。」と感じることが結構ありました。
最初は実行条件の構成って何?という状態でしたが、慣れれば超便利です!応用も可能です!
是非試してみてください!
今回の続編がこちらのブログ記事になります。是非ご覧ください!
【第3回 実務で役立つアプリ開発】Power Automateで便利な機能をカスタマイズしよう! | cloud.config Tech Blog