
こんにちは、あおいです。
趣味の株式投資がここ最近好調です。投資は「プロスペクト理論の罠」にハマらないことが大事です。
さて、OJT研修でPower Platformを活用して「書類の自動発行」に関連したアプリ開発をしていました。
予め用意したWordテンプレートに任意の項目を入力し、ファイルPDFに自動的に変換するというものです。結構便利だなぁ~と思ったので、今回のブログはPower AppsとPower Automateを活用した簡単な「書類の自動発行アプリ」を作ってみたいと思います。
本アプリではプレミアムコネクタを利用するので、Power Automateの有料ライセンスが必要です。
まずはWordテンプレートファイルを事前に作成しておく必要があります。こちらの記事を参考にしてお好みのWordテンプレートを作成してみてください(画像1:今回作成したWordテンプレートファイル)
Power Automate を用いて書類を自動作成する #Power Platformリレー | cloud.config Tech Blog
以下の2つのフォルダをOneDriveに作成してください。
・Wordテンプレートの保存フォルダ(画像2:Tech-Blogフォルダ)
・PDF変換したファイル保存フォルダ(画像2:pdfフォルダ)
Tech-Blogフォルダ内に事前に作成したWordテンプレートを保存しておきます(画像3:Wordテンプレートファイル名Company_Template_File.docx)。



次にPower Appsでキャンバスアプリを作成します。ボタン・ラベル・テキスト入力等のコントロールを適当に配置し、ツリービューから各コントロールに識別しやすい名前を付けておきます。命名まじで大事です。

キャンバスアプリ画面のアクションタブからPower Automate[新しいフローの作成]を選択します。[Power Appsボタン]トリガーの新しいステップから、[データの操作]コネクタの[JSONの解析]アクションを選択します。[サンプルから生成]に以下のJSONをコピペします。そうすると、自動でスキーマが生成されます。
{"CompanyName":"","PersonName":"","Address":"","TelNumber":""}

[日時]コネクタの設定は必須ではないので、こちらのアクションはスキップしてもらっても大丈夫です。
ただ、ファイルに一意識別子を付ける為のアクションなので、きちんと設定しておいたほうが何かと便利です!
※[日時]コネクタで[現在の時刻]を取得して、同様のコネクタで[タイムゾーンの変換]アクションで扱う時刻を世界標準時から日本時間へ変換します。

[Word Online (Business)]コネクタの[Microsoft Wordテンプレートを事前設定します]アクションを選択します。場所[OneDrive for Business]、ドキュメントライブラリ[OneDrive]、ファイル[ファイルパスを確認して指定]など各項目を設定します。そうするとWord内で設定した動的変数が自動的に表示されます。Wordの各項目に[JSONの解析]から動的なコンテンツをセットします。
ひとつ前のアクションで動的なコンテンツはセットされましたが、ここではまだ保存されていない状態なので、OneDriveのフォルダに[ファイルの作成]アクションで一時的に保存します。ファイル名は適当につけておきます。ファイルコンテンツにはひとつ前のアクションで生成された[Microsoft Word 文書]をセットします。
この段階で作成されるwordファイルはPDF変換する前の一時的なファイルです。最終的に使用するのはPDFファイルなので後でファイル削除のアクションが必須です。Wordファイルが残っているとデータの改竄が簡単に出来てしまうのは危険です。

[Word Online (Business)]コネクタの[Word文書をPDFに変換します]アクションを選択して、ファイルにPDF変換する対象ファイルをセットします。この場合、動的なコンテンツからひとつ前のアクションで生成された[表示名]にファイル名(拡張子付き)を指定します。
そしてこの段階ではまだ保存されていない状態なので、OneDrive[ファイルの作成]アクションを選択してpdfフォルダ内に変換したPDFファイルを保存します。
最後にOneDrive[ファイルの削除]アクションを選択して、動的なコンテンツから最初に作成したファイルのIDをセットします。このファイルの削除は大事なので忘れないようにします。

これで一通りのフローは完成です。
最後に、Power Appsの[PDFファイル作成]ボタンを選択した状態で、アクションタブからPower Automateを選び、先ほど作成した[pdf自動生成(OneDrive)]フローを選択します。

[pdfファイル作成]ボタンのOnSelectプロパティに数式を入力して、各テキスト入力コントロールのResetプロパティに変数 isReset をセットしておいてください。


これで完成です!
試しにアプリの各項目を適当に入力してボタンを押してPower Automateのフローを走らせてみましょう!
実行後、OneDriveのpdfフォルダ内を確認すると、新規pdfファイルが生成されているはずです。
ファイルを開いてPower Appsで入力した内容がきちんと反映されていたら成功です!


もし、Power Appsの画面を作成するのがめんどくさいと思ったら、[手動でフローをトリガーします]を最初のトリガーにしておけば大丈夫です!

これでPower AppsとPower Automateを活用した簡単な「書類の自動発行アプリ」作成が完了しました!
今回は簡単な書類の自動発行機能を作成してみましたが、[Power Apps]コネクタの[Power App または Flowに応答する]アクションを活用し、Automateフローの値をPower Appsに返すことでPower Apps側の操作の幅が広がります!非常に簡単なので是非試してみてください!