今回は、Power AutomateでDataverseテーブルのリレーションを使用したアクションをご紹介します。
目次
IDで行を取得する
DataverseではID(主キー)は自動作成されます。このIDが行を特定できる一意識別子となり、この「IDで行を取得する」アクションでその行の情報をすべて取得することができます。
ちなみに、テーブル名と同一名の列に格納されています。
よく使う使い方
このアクションを使用することで、子レコードとの関連付けを参照しながら親レコードを取ってくることができます。
子テーブルでは親テーブルの行のIDのみ保持しているため、子テーブルの他の情報を持ってきたい場合はこのようにIDで行を取得します。
使用例
子テーブルである「販売注文テーブル」に行の追加、変更があったときにその行の情報をTeamsで通知したいとします。
その販売注文テーブルの検索列「製品情報」に関連付いている、製品テーブルのレコードの値を取ってくるときに「IDで行を取得する」を使います。
「IDで行を取得する」の設定
テーブル名:親テーブル(IDから情報を取りたいテーブル)
行ID:動的なコンテンツの「行が追加、変更、または削除された場合」の「販売注文」テーブルの「製品情報」列で指定された値を指定することで、親テーブルのIDを取得することができます。ここがコツです。
すると、そのあと動的なコンテンツで、「IDで行を取得する」で取得した、製品テーブルの列を設定することができるようになります。
行を関連付ける
このアクションは、すでに1対多または多対多のリレーションシップがあるテーブルに対してのみ使用ができるアクションです。
関連テーブルで新しい行を追加した際にこのアクションを使って、レコードの関連付けを行います。
以下の記事で書いた「検索列への値の挿入」と同じ挙動をします。
使用例
まず、このアクションを使う前に、親テーブルのレコードのOdataIDを取得する必要があるため、「IDで行を取得する」アクションで親テーブルのレコードの指定を行います。
今回は製品テーブルを指定します。
[行ID]にはGUIDを入れます。
GUIDはテーブル名と同じ列に保存されてます。
編集不可の列でわかりづらいですが、この列の各レコードをダブルクリックし、Ctrl+Cで値をコピーすることができます。
その下に「行を関連付ける」アクションを追加し、子テーブルを指定します。
関連付けを行いたいレコードのGUIDを[行ID]に設定します。
[リレーションシップ]項目には親テーブルとのリレーションを選択して下さい。
[関連付け]は動的なコンテンツの「IDで行を取得する」>[Odata ID]を選択します。
(事前にその値を調べておき、URL形式のOdata IDを入力しておくことも可能です。)
このフローを実行すると、指定したレコードで関連付けが行われます。
行の関連付けを解除する
行を関連付けるアクションの反対のアクションです。
このアクションで、同様に項目を設定することで指定したレコードで関連付けを解除することできます。