
こんにちは、あおいです。
最近、長尾中華そばの『ごくにぼ』に沼って体重が順調に増加しています。
さて、今回は実務で役に立ちそうな場合を想定して、DataverseのデータをPower Automateで予め用意したExcelテンプレートに転記して請求書を作ってみたいと思います。
本アプリではプレミアムコネクタを使用するので、Power Automateの有料ライセンスが必要です。
まずはExcelテンプレートファイルを事前に作成しておく必要があります。
[No(品名番号)][品名][数量][単価][金額]の列名を含むテーブルを作成し、テーブル名は[請求書]とします。また、[金額][小計][消費税][合計]セルの各数式バーには適当な数式を入力しておきます。Power Automateで数量と単価の値がはめ込まれて自動的に計算してくれます。

次に[請求書]テーブルの1行目の行番号を右クリックで選択し、[行の削除]を実行して金額セルが空白になることを確認します。こちらの操作を実行する理由は本記事の最後に説明します。


Excelテンプレートが作成出来たら[請求書テンプレ]と適当なファイル名を付けておき、SharePointのドキュメントライブラリの適当なフォルダ内にアップロードします。

Dataverseで[品目]テーブルと[請求書]テーブルを作成します。こちらの記事を参考にしてテーブルを作成してみてください。
Power Appsでデータテーブルを作ってみた | cloud.config Tech Blog
Power Appsのトリセツ(もちろん非公式)#エンティティ編 | cloud.config Tech Blog


[品目]テーブルと[請求書]テーブルを作成したら、リレーションシップを使ってテーブル間に繋がりを持たせます。今回は多対一の関連性を持たせます。

[レコードの追加]から各テーブルに適当なデータを追加していきます。


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

[SharePoint]コネクタの[パスによるファイルコンテンツの取得]アクションを選択します。
サイトのアドレス[SharePointサイトアドレスを選択]、ファイルパス[📁から請求書テンプレ―トファイルのパスを指定]など各項目を設定していきます。
※[ファイルのコピー]アクションでも可能ですが、任意のファイル名を付けられないので今回はこちらのアクションを利用します。
同じく[SharePoint]コネクタの[ファイルの作成]アクションを選択します。
サイトのアドレス[適当なSharePointサイトアドレスを選択]、フォルダーのパス[作成したファイルの保存フォルダを選択]、ファイル名[動的なコンテンツから変換後の時間を選択+拡張子.xlsxを入力]、ファイルコンテンツ[動的なコンテンツからファイルコンテンツを選択]など各項目を設定していきます。

[Excel Online(Business)]コネクタの[テーブルの取得]アクションを選択します。
場所[該当の場所を選択]、ドキュメントライブラリ[ドキュメント]、ファイル[動的なコンテンツからId(ファイルの作成)を選択]など各項目を設定していきます。
[Microsoft Dataverse]コネクタの[行を一覧にする]アクションを選択します。
テーブル名[請求書]で各項目を設定していきます。

[Microsoft Dataverse]コネクタの[IDで行を取得する]アクションを選択します。
テーブル名[品目]、行ID[動的なコンテンツから品名(値)を選択]など各項目を設定していきます。行IDの品名(値)を指定することで品目テーブルの列名を取得することが出来ます。
[Excel Online(Business)]コネクタの[表に行を追加]アクションを選択します。
場所[該当の場所を選択]、ドキュメントライブラリ[ドキュメント]、ファイル[動的なコンテンツからId(ファイルの作成)を選択]、テーブル[動的なコンテンツから表ID(テーブルの取得)を選択]など各項目を設定していきます。
最後の項目[行]にJSON形式で入力していきます。Excelで作成した請求書テーブルの各列名に相当する値を動的なコンテンツから選択していきます。

これで一通りのフローは完成です!
試しにPower Automateのフローを走らせてみましょう!
該当のフォルダ内にExcelの請求書ファイルが作成されていたら成功です!
ファイルの中身を確認してみると、Dataverseで登録したデータが各行に転記されていますね。そのデータを元に[金額][小計][消費税][合計]セルに自動計算された結果が反映されます。


今回は[インスタントクラウドフロー]のトリガーに設定しましたが、[Power Appsのボタン]をトリガーにして、キャンバスアプリで品名やその数量・単価を入力する画面を作成する。そして、今回のフローと連携することによってより実務で活躍するアプリが出来ます!是非試してみてください!
【行の削除を実行する理由】
[行の削除]を実行せずにクラウドフローを起動すると、2行目にデータが追加されて1行目が空白行(赤枠部分)となります。こちらの動作の原因は、Excel側で1行目にデータが存在すると判断されるからです。
そのため、[行の削除]を実行して0の数値データを削除します。
