Power Automate で Dataverse の「行を一覧にする(List rows)」アクションで FetchXML クエリ を超カンタンに利用する方法をまとめてみました。
※Power Automate の クラウドフローを取り扱います。
※Power Apps の モデル駆動型アプリを利用しますが、カンタンです。
※Dataverse のテーブルは Dynamics 365 Sales のサンプルデータを利用しています。
※今回は長い...長いったら長い。
- Dataverse の参照先のテーブルのデータも取得したい
- Power Automate の 「行を一覧にする」アクション
- OData クエリ の場合
- FetchXML クエリとは
- FetchXML クエリ を カンタン に 作成!
- さいごに
Dataverse の参照先のテーブルのデータも取得したい
Dataverse で 取引先企業 と 取引先担当者 というテーブルが2つあります。取引先企業 の 取引先責任者 列は取引先担当者のテーブルを参照しています。
Power Automate で取引先企名と取引先責任者名とその方の役職を取得し、「鹿児島市」でフィルターしたデータがほしいを今回は検証します。
こういうデータが取得したい。
Power Automate の 「行を一覧にする」アクション
使うアクションは「行を一覧にする」アクションです。
条件を設定してデータを取得するには、OData クエリと FetchXML クエリ が利用できます。
左がFetchXMLクエリ、右が OData クエリ。
OData クエリ の場合
OData クエリ は Power Automate をやっていく上では避けては通れないけど、ローコードを初めてやった人にはなかなかハードルが高いような気がします。
今回は詳細は説明は割愛します。
ドキュメントはこのあたり。
learn.microsoft.com
FetchXML クエリとは
FetchXML クエリは 「Microsoft Dataverse 独自の XML ベースのクエリ言語」になります。
ちょっと自分で書こうとすると厳しいです。
これを簡単に作成する方法があります。
FetchXML クエリ を カンタン に 作成!
モデル駆動型アプリを使うと カンタン に作成できるんです。
モデル駆動型アプリ で FetchXML クエリ の取得手順
Power Apps の https://make.powerapps.com/ の ホーム >空のアプリ > Dataverse ベースの空のアプリ(モデル駆動型アプリ) の 作成 ボタンを押します。
アプリの名前を設定して、作成。
Dataverse テーブル を選択し、 次へ 。
すでにテーブルは作成済みのものを利用するので、既存のテーブルを利用するにチェック し、テーブルを選択します。
今回は 取引先企業 のテーブルを利用します。
あとで操作に困らないように、ナビゲーションに表示する にもチェックを入れておきましょう。
追加 をクリックします。
先ほど追加した 取引先企業 テーブルの 取引先企業ビュー を選択します。
保存し、公開して、再生します。
保存や公開は少し時間がかかります。
列の編集
Dynamics 365 Sales では、Common Data Model で定義されたテーブルを利用します。
取引先企業のテーブルもその一つです。
データを一覧で確認するのがビューなのですが、ビューがいくつか事前に作成されているので、今回は特にフィルターのかかっていない すべての取引先企業 ビューを選択します。
右上の列の追加をクリックします。
今回は、参照先の取引先責任者 の 役職 が欲しいので、関連タブから役職を検索し、取引先責任者(取引先担当者)の役職を選択します。
必要な列の追加が終わったら、閉じるで閉じます。
必要な項目を揃えたら、適用します。
フィルターの適用
続いて、フィルターを設定します。
先ほどの列の編集の隣の フィルターを編集する をクリックします。
+追加 から 行の追加 を選択します。
住所1:市区町村、次の値と等しい、鹿児島県 で設定し適用をクリックします。
再度、フィルターを編集するをクリックします。
FetchXML クエリのダウンロード ボタンをクリックすると、ブラウザで警告が出る場合がありますが、保存で保存します。
ダウンロードしたファイルをメモ帳やVS Code で開き、内容をコピーします。
Power Automate へ貼り付け
Power Automate で 行を一覧にする アクションを追加し、Fetch Xml クエリ の欄に先ほどコピーした内容を貼り付けます。
キャプチャーはわかりやすいように改行入れてみましたが、一行テキストをそのまま貼り付けてもらってOKです。
そして実行。
出力の未加工出力の表示をクリックし、その内容をVisual Studio Code に貼ります。
欲しかったデータが取得できていることがわかります。
赤枠の部分が取引先企業のデータ。
黄枠の部分が取引先責任者(取引先担当者)のデータ。
赤枠は動的コンテンツとして簡単に選択できるのですが、参照先のテーブルはちょっとコツがいります。
抜粋
"value": [ { <中略> "name": "アルパイン スキー ハウス", "address1_city": "鹿児島市", "_primarycontactid_value@OData.Community.Display.V1.FormattedValue": "金城 彩乃", <中略> "a_2c3f75a16f394536be93b0afedaddc52.jobtitle": "購買課長", <以下省略> } ]
参照先テーブルの指定
Dataverse からデータを取得した後のアクションで利用する際に、参照先が動的コンテンツで追加できないので、手動で追加します。
@item()?['<キー>'] のように記載すれば、いいので、下記のようになります。
※ちょっとここが難しい。
※環境によってキーが変わる可能性があるので、ご利用中の環境の出力結果をよく確認ください。
参照先の取引先担当者の表示名と役職
@item()?['_primarycontactid_value@OData.Community.Display.V1.FormattedValue'] @item()?['a_2c3f75a16f394536be93b0afedaddc52.jobtitle']
さいごに
FetchXML クエリは頑張ってゼロから書こうとすると難易度が高いですが、モデル駆動型を使うとマウスポチポチ作業でフィルターを作成できるので便利です!
モデル駆動型も最後まで作りきらなくてもよいので、敷居も低いのがポイント!
是非、使ってみてください!