Power Automateを使ってDataverseのレコードの所有者を設定したいとき、ユーザー(チーム)のレコードのGUIDをそのまま指定するだけじゃダメだったので、その方法をメモ。
GUIDをそのまま指定するだけじゃダメっぽい
例えば、こんなテーブルにレコードが作成されたとき、
Power Automateを使って「所有者」列にこのユーザーを設定したいとなったとき、
何かしらの方法(今回は「ユーザー」テーブルの一覧からドメイン名でフィルター)でユーザー情報を取得して、
取得したユーザー情報のGUIDを「所有者」列に入れてあげれば設定できるのかなと思っていたら、
どうもダメっぽい。
少し調べてみると、ユーザーやチームを設定するときはGUIDに加えてプレフィクスが必要らしい。
ユーザーをGUIDで指定したいとき
まず、ユーザーを「所有者」に設定するときは「/systemusers/」プレフィクスが必要。
さっきのフローの「行を更新する」アクションをこんな感じで修正してあげれば(ユーザーGUIDの前に「/systemusers/」を直接書いてあげれば)、
自分のアカウントでレコードを作成しても、
フローが動作して、
「所有者」が変更される!
チームをGUIDで指定したいとき
レコードの「所有者」にはユーザーの他に「所有者チーム」も設定することができて、その際はチームのGUIDに加えて「/teams/」プレフィクスが必要。
例えばさっきのユーザーが所属している「部署1」の所有者チームを「所有者」に設定したい場合、
ユーザーの部署IDも取得するように設定して、
部署IDを取得して、その部署の所有者チームを引っ張ってくる。
そして、「所有者」に「/teams/」プレフィクスとチームのGUIDを設定する。
すると指定した所有者チームが「所有者」列に設定される。
おまけ:所有者にチームを設定しようとしてエラーが発生する場合
所有者にチームを設定しようとしてこんなエラーが出る場合、
これはその所有者チームがテーブルに対して必要な権限(セキュリティロール)を持っていないときに発生するエラーなので、チームに対してそのテーブルへのセキュリティロールを設定してあげる必要がある。
コメント