Help us understand the problem. What is going on with this article?

Microsoft Teamsのために作成されたO365グループを取得する

More than 1 year has passed since last update.

はじめに

MicrosoftがリリースしたTeamsはユーザー管理の基盤としてOffice365(O365)のグループを作成します。
つまり1チームにつき1つのO365グループが作成されます。O365のグループはTeams以外でも使用されますし、しかもチームはデフォルト設定でテナントユーザーであれば誰でも作りたい放題なので、情報システム部門はテナント内のO365グループを把握するのは一苦労です。
というわけでテナント内のO365グループからTeamsのために作成されたO365のグループを取得してみます。

取得の仕方

取得にはMicrosoft Graph APIを使用します。
Graph Explorerにアクセスして以下のAPIエンドポイントのURLをGETメソッドで呼び出します。

https://graph.microsoft.com/v1.0/groups

すると以下のようなJSONファイルが取得されます。
Graph Explorerではログインをしないとダミーデータが表示されます実際のご自身のテナントの情報を取得したい場合は画面左からテナントのアカウントで認証を行ってください。)

Groups.json
{
    "@odata.context": "https://graph.microsoft.com/beta/$metadata#groups",
    "value": [
        {
            "id": "02bd9fd6-8f93-4758-87c3-1fb73740a315",
            "description": "Welcome to the HR Taskforce team.",
            "displayName": "HR Taskforce",
            "groupTypes": [
                "Unified"
            ],
            "mailEnabled": true,
            "mailNickname": "HRTaskforce",
            "resourceBehaviorOptions": [],
            "resourceProvisioningOptions": [
                "Team"
            ],
            "securityEnabled": false,
            "visibility": "Private",
        },
        {
            "id": "8090c93e-ba7c-433e-9f39-08c7ba07c0b3",
            "description": "Welcome to the team that we've assembled to launch our product.",
            "displayName": "X1050 Launch Team",
            "groupTypes": [
                "Unified"
            ],
            "mailEnabled": true,
            "mailNickname": "X1050LaunchTeam",
            "resourceBehaviorOptions": [],
            "resourceProvisioningOptions": [],
            "securityEnabled": false,
            "visibility": "Private",
        }
        ...
    ]
}

このJSONはグループ情報の配列になっています。
そして各グループのresourceProvisioningOptionsというプロパティに"Team"という値が入っていればそのグループはTeamsのために作成されたグループであるということを表しています。

ODataクエリ

Microsoft Graph APIはODataに対応しており、以下のURLでアクセスするとresourceProvisioningOptions"Team"が含まれるグループ、つまりTeamsのために作成されたグループ情報のみが取得できます。

https://graph.microsoft.com/beta/groups/groups?$filter=resourceProvisioningOptions/Any(x:x eq 'Team')

注.このODataクエリはv1.0エンドポイントでは対応していないため、bataを使用する必要があります。

参考

https://developer.microsoft.com/en-us/graph/docs/api-reference/beta/api/team_list_all_teams

07JP27
C# / Azure大好きマン PoCやってるときが一番楽しい。 JDLA E資格 2019#2
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away