ルドルフもわたるふもいろいろあってな

Microsoft 365、Power Platform、PowerShellについて調べたことや検証したことなどを投稿します。技術の話は面白い。

【Power Automate】【解説編その2】チームのメンバーを別チームのタグに同期する

掲題のフローについての解説編です。

このフローをGitHubで公開しました。下記リンク先からダウンロードしてください。

github.com

解説の経緯

今回の投稿は概要編解説編その1の続きです。

フローの使用イメージ

フローの使用イメージについては概要編に記載しています。概要編を未読のかたはそちらを先に参照ください。

フロー図

アクションの設定を閉じた状態のフロー図

このフローで実施している処理の大項目は以下の通りです。

  1. メンバーの取得
    • 同期元のチームメンバー
    • 同期先のチームメンバー
    • 同期先タグ
  2. メンバー差異の取得
    • 同期元チームにいて、かつ、同期先チームにいないメンバー
    • 同期元チームにいなくて、かつ、同期先チームにいるメンバー
    • 同期元チームいて、かつ、タグにいないメンバー
    • 同期元チームいなくて、かつ、タグにいるメンバー
  3. 同期先チームおよびタグのメンバー追加・削除

「解説編その2」で解説する範囲

「解説編その2」解説する範囲は黄色マーカーをひいている範囲です。

メンバー差異の取得について今回は解説します。

  1. メンバーの取得
    • 同期元のチームメンバー
    • 同期先のチームメンバー
    • 同期先タグ
  2. メンバー差異の取得
    • 同期元チームにいて、かつ、同期先チームにいないメンバー
    • 同期元チームにいなくて、かつ、同期先チームにいるメンバー
    • 同期元チームいて、かつ、タグにいないメンバー
    • 同期元チームいなくて、かつ、タグにいるメンバー
  3. 同期先チームおよびタグのメンバー追加・削除

ステップごとの解説

「スコープ-同期元チームと同期先チームのメンバーの差異を取得」アクション

このアクションは「コントロール」>「スコープ」です。同期元のメンバーをすべて取得します。

このスコープに含まれるアクション(=同期元チームと同期先チームのメンバーの差異に関わるアクション)は下図のふたつです。

「アレイのフィルター処理-同期元チームのみにいるメンバーを取得」アクション

このアクションは「データ操作」>「アレイのフィルター処理」です。このアクションでチームメンバーをすべて取得します。

"inputs": {
    "from": "@body('選択-同期元チームに含まれるメンバー')",
    "where": "@equals(contains(body('選択-同期先チームに含まれるメンバー'), item()), false)"
},

このアクションの出力はこちらです。

「アレイのフィルター処理-同期先チームのみにいるメンバーを取得」アクション

このアクションは「データ操作」>「アレイのフィルター処理」です。このアクションでチームメンバーをすべて取得します。

"inputs": {
    "from": "@body('選択-同期先チームに含まれるメンバー')",
    "where": "@equals(contains(body('選択-同期元チームに含まれるメンバー'), item()), false)"
},

実はこのアクションの出力はフローの後続処理では使用していません。その理由は、このフローでは同期元チームのメンバーを削除した場合は同期先タグから同メンバーの削除を行いますが、同期先チームからの削除は行わないようにしているためです。同期先チームからのメンバー削除が要件に含まれる場合はこのアクションの出力を活用してください。

このアクションの出力はこちらです。

「スコープ-同期元チームとタグのメンバーの差異を取得」アクション

このアクションは「コントロール」>「スコープ」です。同期元のメンバーをすべて取得します。

このスコープに含まれるアクション(=同期元チームとタグのメンバーの差異に関わるアクション)は下図のふたつです。

「アレイのフィルター処理-同期元チームに有り、かつ、タグに無しメンバー」アクション

このアクションは「データ操作」>「アレイのフィルター処理」です。このアクションでチームメンバーをすべて取得します。

"inputs": {
    "from": "@body('選択-同期元チームに含まれるメンバー')",
    "where": "@equals(contains(body('選択-タグに含まれるメンバー'), item()), false)"
},

このアクションの出力はこちらです。

「アレイのフィルター処理-同期元チームに有り、かつ、タグに無しメンバー」アクション

このアクションは「データ操作」>「アレイのフィルター処理」です。このアクションでチームメンバーをすべて取得します。

"inputs": {
    "from": "@body('選択-タグに含まれるメンバー')",
    "where": "@equals(contains(body('選択-同期元チームに含まれるメンバー'), item()), false)"
},

このアクションの出力はこちらです。

最後に

今回はメンバー差異の取得について解説を行いました。

次回「解説編その3」では、同期先チームおよびタグのメンバー追加・削除について解説します。

  1. メンバーの取得
    • 同期元のチームメンバー
    • 同期先のチームメンバー
    • 同期先タグ
  2. メンバー差異の取得(今回解説した範囲)
    • 同期元チームにいて、かつ、同期先チームにいないメンバー
    • 同期元チームにいなくて、かつ、同期先チームにいるメンバー
    • 同期元チームいて、かつ、タグにいないメンバー
    • 同期元チームいなくて、かつ、タグにいるメンバー
  3. 同期先チームおよびタグのメンバー追加・削除

今回は以上です。