ささみ学習帳 - sasami's study book

ささみ学習帳

Microsoft365 や Power Platform について学んだこと・アイデアのメモ

Vivaエンゲージ(Yammer) のコミュニティ内で使われている全てのトピックを取得する Power Automate クラウドフロー

以前Qiitaに投稿した【PowerAutomate】Yammerのコミュニティで使用しているトピック一覧を作る【暫定版】を整理して見直したものです。

Yammerコネクタの「グループ内のメッセージを取得する (V2)」アクションの出力の body/references 下に取得したメッセージに関連する下表のような情報が含まれています。
その為、「グループ内のメッセージを取得する (V2)」アクションでコミュニティ内の全てのメッセージを取得すれば、使われているトピックの情報も取得することができます。

type 中身
topic トピックの定義
tag ハッシュタグの定義
thread スレッド(トピックとの紐付け含む)
group コミュニティの定義
user ユーザーの定義

コミュニティ内の全メッセージを取得するフローは、Vivaエンゲージ(Yammer) のコミュニティ内の全てのメッセージを取得する Power Automate クラウドフロー ※「 グループでメッセージを取得する (V2)」アクション対応 超簡易改修メモ で作成しているので、このフローを微修正するだけで取得することができます。

フロー全体

赤枠の部分が要修正箇所です。

フロー修正箇所解説

Initialize variable varAllTopics アクション

  • 変数名をわかりやすい名前に変更
    • varAllMessages → varAllTopics

Get message in a group アクション

  • 「メッセージのスレッドの種類」:true
    • トピックはスレッドに設定されるので、true に変更してスレッドのスタートメッセージのみ取得します。  

JSONの解析 - reference & アレイのフィルター処理 - topics

  • Get message in a group アクション の 出力からトピックの部分を抽出します。
    JSONの解析 のスキーマ定義はサンプルから生成したこれを使っています。
{
    "type": "array",
    "items": {
        "type": "object",
        "properties": {
            "type": {
                "type": "string"
            },
            "id": {
                "type": "integer"
            },
            "name": {
                "type": "string"
            },
            "state": {
                "type": "string"
            },
            "full_name": {
                "type": "string"
            },
            "job_title": {},
            "network_id": {
                "type": "integer"
            },
            "mugshot_url": {
                "type": "string"
            },
            "mugshot_redirect_url": {
                "type": "string"
            },
            "mugshot_url_template": {
                "type": "string"
            },
            "mugshot_redirect_url_template": {
                "type": "string"
            },
            "url": {
                "type": "string"
            },
            "web_url": {
                "type": "string"
            },
            "activated_at": {
                "type": "string"
            },
            "auto_activated": {
                "type": "boolean"
            },
            "stats": {
                "type": "object",
                "properties": {
                    "following": {
                        "type": "integer"
                    },
                    "followers": {
                        "type": "integer"
                    },
                    "updates": {
                        "type": "integer"
                    }
                }
            },
            "email": {
                "type": "string"
            },
            "aad_guest": {
                "type": "boolean"
            },
            "thread_starter_id": {
                "type": "integer"
            },
            "group_id": {
                "type": "integer"
            },
            "topics": {
                "type": "array"
            },
            "privacy": {
                "type": "string"
            },
            "announcement": {
                "type": "boolean"
            },
            "direct_message": {
                "type": "boolean"
            },
            "has_attachments": {
                "type": "boolean"
            },
            "reply_disabled": {
                "type": "boolean"
            },
            "invited_user_ids": {
                "type": "array"
            },
            "read_only": {
                "type": "boolean"
            },
            "description": {
                "type": "string"
            },
            "mugshot_id": {},
            "show_in_directory": {
                "type": "string"
            },
            "created_at": {
                "type": "string"
            },
            "members": {
                "type": "integer"
            },
            "aad_guests": {
                "type": "integer"
            },
            "color": {
                "type": "string"
            },
            "external": {
                "type": "boolean"
            },
            "moderated": {
                "type": "boolean"
            },
            "header_image_url": {
                "type": "string"
            },
            "category": {
                "type": "string"
            },
            "default_thread_starter_type": {
                "type": "string"
            },
            "restricted_posting": {
                "type": "boolean"
            },
            "company_group": {
                "type": "boolean"
            },
            "id_str": {
                "type": "string"
            },
            "creator_id": {
                "type": "integer"
            },
            "normalized_name": {
                "type": "string"
            },
            "permalink": {
                "type": "string"
            },
            "followers_count": {
                "type": "integer"
            }
        },
        "required": [
            "type",
            "id",
            "network_id",
            "url",
            "web_url"
        ]
    }
}

Compose array of messages from union アクション

トピックの情報を変数に格納します。union関数で結合することで、重複するトピックは格納されません。

union(variables('varAllTopics'), body('アレイのフィルター処理-topics'))