
Power Automate の承認フローを使っていると、いつか必ず承認者のコメントを後から取得したい誰がいつ承認したか記録に残したいという要件に直面します。標準の承認アクションだけではここに限界があり、Dataverse の中身を理解する必要が出てきます。
この記事では、承認データが裏側でどのように Dataverse に保存されているかを整理し、コメント取得・履歴追跡・ライセンスの考え方まで解説します。中級〜上級者向けの内容ですが、仕組みを知るだけでフロー設計の選択肢が広がります。
承認データはどこに保存されているのか
Power Automate の承認コネクタを使ってフローを実行すると、承認に関するデータは自動的に Dataverse の標準テーブルに書き込まれます。フローの実行履歴には結果(承認 or 拒否)しか表示されませんが、その裏では承認依頼・承認者の応答・コメントといった情報が構造化されて保存されています。
この仕組みを知らないと、コメントを取得したくても動的コンテンツに出てこない、という壁にぶつかります。私もはじめて承認者のコメントを SharePoint リストに記録しようとしたとき、承認アクションの出力だけでは不十分なことに気づいて Dataverse の構造を調べることになりました。
承認フロー全体の設計についてはPower Automate 承認フロー完全ガイドで解説しています。この記事では Dataverse の裏側に絞って掘り下げます。
4つの主要テーブルと役割
承認コネクタが使う Dataverse テーブルは主に4つあります。それぞれの役割を理解することが、必要なデータを取得するための第一歩です。
| テーブル名 | 論理名 | 役割 |
|---|---|---|
| 承認 | msdyn_approval | 承認フロー全体の親レコード。最終結果(承認/拒否)が入る |
| 承認依頼 | msdyn_approvalrequest | 承認者への通知・依頼情報。誰に依頼したかが記録される |
| 承認応答 | msdyn_approvalresponse | 各承認者の回答・コメント。ここにコメントが入る |
| 承認ステップ | msdyn_approvalstep | 多段承認の各ステップの状態・順序が記録される |

承認テーブル(親)
承認フロー全体を管理する親レコードです。フローが完了したとき、最終的な結果(承認されたか拒否されたか)がここに入ります。承認アクションの動的コンテンツで取れる結果はこのテーブルから来ています。ただし承認者のコメントはここには入りません。
承認応答テーブル(コメントの在処)
承認者が承認・拒否をクリックしたときの応答レコードです。ここに各承認者のコメントが保存されます。多段承認の場合、承認者の数だけレコードが作られます。標準の承認アクションの動的コンテンツだけではこのテーブルにアクセスできないため、コメントを取得するには Dataverse コネクタを別途使う必要があります。
コメント取得の落とし穴
承認フローが完了した後、承認者のコメントをフロー内で取得しようとすると、ほとんどの人が一度はつまずきます。承認アクションの出力にコメントが入っていないためです。
標準の動的コンテンツにコメントがない理由
承認アクション(承認の開始と待機)の出力として使える動的コンテンツには、結果・応答概要などは含まれますが、承認者が入力したコメントの本文は含まれていません。コメントは承認応答テーブルに別途保存されるため、そのテーブルを直接クエリしないと取得できない仕組みになっています。
コメントを取得する2つのアプローチ
コメントを取得する方法は2つあります。1つ目は承認アクションの出力にある応答詳細を使う方法、2つ目は Dataverse コネクタで承認応答テーブルを直接クエリする方法です。
1つ目のアプローチでは、承認の開始と待機アクションの出力から応答配列を参照し、それぞれに適用(Apply to each)で回して各承認者のコメントを取り出します。これは標準コネクタのみで完結するため、ライセンス追加が不要です。ただし応答配列の構造を正確に把握する必要があります。
// Apply to each の中で使うコメント取得の式
items('Apply_to_each')?['comments']
2つ目の Dataverse コネクタを使うアプローチでは、承認応答テーブルを承認IDでフィルターしてコメントを取得します。こちらのほうが柔軟性は高いですが、後述するプレミアムライセンスが必要になります。

多段承認の履歴追跡
連続した承認(多段承認)を使っている場合、第1承認者のコメントと第2承認者のコメントを分けて記録したいケースがあります。承認ステップテーブルと承認応答テーブルを組み合わせることで実現できますが、設計がやや複雑になります。
ステップ番号でコメントを仕分ける
承認ステップテーブルにはステップ番号(順序)が記録されています。承認応答テーブルと承認ステップテーブルをリレーションでつなぐことで、第1ステップの承認者コメント・第2ステップの承認者コメントを区別して取得できます。
ただし、この操作は Dataverse コネクタのリレーションクエリを使うため、プレミアムライセンスが必要です。標準ライセンスのみの環境では、Apply to each でステップインデックスを自分で管理する方法で代替するのが現実的です。
ライセンスの考え方
Dataverse コネクタ(行を一覧表示する・行を取得するなど)はプレミアムコネクタに分類されます。つまり、承認応答テーブルや承認ステップテーブルを Dataverse コネクタで直接操作するには、フローを実行するユーザーに Power Automate Premium(または Power Apps Premium)ライセンスが必要です。
| 操作 | 必要なライセンス |
|---|---|
| 承認コネクタで承認フローを動かす | Microsoft 365 標準ライセンス |
| 承認アクションの出力でコメントを取得する | Microsoft 365 標準ライセンス |
| Dataverse コネクタで承認応答テーブルを直接クエリする | Power Automate Premium |
| Dataverse コネクタでリレーションクエリを使う | Power Automate Premium |
社内でプレミアムライセンスが使えない場合は、標準の動的コンテンツの範囲でコメントを取得する設計に留めるのが現実解です。コメントの記録先として SharePoint リストを使う場合は、SharePoint リストのデータ読み書きの基本も参考にしてください。
Dataverse テーブルを確認する方法
実際にどんなデータが入っているかを確認したい場合は、Power Apps のメーカーポータル(make.powerapps.com)からテーブルを直接参照できます。Dataverse の標準テーブルは隠しテーブルとして存在しているため、テーブル一覧には表示されませんが、論理名で検索すると見つかります。
- make.powerapps.com にアクセスし、左メニューからテーブルを選ぶ
- すべてのテーブルを表示に切り替え、検索欄に msdyn_approval と入力する
- 該当テーブルを開き、データタブでレコードを確認する
実際のレコードを見ながら設計するほうが、どのカラムに何が入るかイメージしやすくなります。フローの設計で詰まったときは一度確認してみることをおすすめします。

まとめ
承認コネクタの裏側では、Dataverse の4つの標準テーブルが連携してデータを管理しています。コメントを取得したい場合は承認応答テーブルを、多段承認の履歴を追いたい場合は承認ステップテーブルを参照する必要があります。
プレミアムライセンスなしでもコメント取得は可能ですが、できることの範囲は変わります。仕組みを理解した上で、自分の環境に合った設計を選んでいきましょう。市民開発とはこういう地道な仕組み理解の積み重ねだと思っています。