> ## Documentation Index
> Fetch the complete documentation index at: https://help.dingtalk.io/llms.txt
> Use this file to discover all available pages before exploring further.

# 会議室グループの作成・更新・照会

> 社内アプリでスマート会議室 API を利用して会議室グループを作成更新照会削除できます

本ドキュメントでは、社内アプリを作成し、スマート会議室が提供する API を利用して、会議室グループの作成・更新・照会を実装するフローを示します。

## 想定される効果

会議室グループの表示効果は以下のとおりです。

## フロー概要

前提条件：[アプリの作成と設定](/ja/open/dingstart/create-application) のフローを完了してください。

ステップ 1：アプリ認証情報を取得し、クライアント ID と Client Secret を取得します。

ステップ 2：API 権限をリクエストし、スマート会議室関連の API 権限を申請します。

ステップ 3：アプリのアクセス認証情報を取得します。[社内アプリのアクセストークンを取得する](/ja/open/development/obtain-the-access-token-of-an-internal-app)。API を呼び出す際、アクセストークンによって呼び出し元の身元を認証します。

ステップ 4：会議室関連 API を呼び出します。

1. サーバー API [会議室グループの作成](/ja/open/development/create-meeting-room-groups) を呼び出し、会議室グループの戻り値 `result` フィールド、すなわち会議室グループ ID を取得します。
2. 会議室グループ ID に基づき、サーバー API [会議室グループ情報の更新](/ja/open/development/update-meeting-room-groups) を呼び出して、会議室グループ情報の更新操作を実行します。
3. サーバー API [会議室グループリストの照会](/ja/open/development/query-meeting-rooms-groups) を呼び出して、会議室グループリストのコンテンツを取得します。
4. 会議室グループ ID に基づき、サーバー API [会議室グループ情報の照会](/ja/open/development/query-meeting-room-groups) を呼び出して、個別の会議室グループの詳細コンテンツ情報を取得します。
5. 会議室グループ ID に基づき、サーバー API [会議室グループの削除](/ja/open/development/delete-a-conference-room-group) を呼び出して、会議室グループの削除操作を実行します。

## 前提条件

[アプリの作成と設定](/ja/open/dingstart/create-application) のフローを完了してください。

## ステップ 1：アプリ認証情報の取得

1. 対象のアプリを選択し、アプリ詳細ページに入り、**ベーシック情報** > **認証情報とベーシック情報** をクリックします。
2. クライアント ID と Client Secret を取得します。

## ステップ 2：API 権限の追加

**開発設定** > **権限管理** をクリックし、権限検索ボックスに `VideoConference.Conference.Write` と `VideoConference.Conference.Read` をそれぞれ入力して、権限を申請します。

## ステップ 3：アプリのアクセス認証情報（アクセストークン）の取得

<Warning>
  サーバー API の差異については、旧版 API VS 新版 API を参照してください。以下の API はすべてサーバー API を使用しており、SDK のダウンロードについてはサーバーサイド SDK ダウンロードを参照してください。
</Warning>

ステップ 1 で取得したクライアント ID と Client Secret に基づき、アプリのアクセス認証情報を取得します。[社内アプリのアクセストークンを取得する](/ja/open/development/obtain-the-access-token-of-an-internal-app)。

```java theme={"theme":{"light":"github-light","dark":"github-dark"}}
 public void getAccessToken() throws Exception {
        Config config = new Config();
        config.protocol = "https";
        config.regionId = "central";
        com.aliyun.dingtalkoauth2_1_0.Client client = new com.aliyun.dingtalkoauth2_1_0.Client(config);
        GetAccessTokenRequest accessTokenRequest = new GetAccessTokenRequest()
                .setAppKey("din*********hgn")
                .setAppSecret("9G_O************mBkhgGIO");
        GetAccessTokenResponse accessToken = client.getAccessToken(accessTokenRequest);
        System.out.println(JSON.toJSONString(accessToken.getBody()));
    }
```

## ステップ 4：会議室グループ関連 API の呼び出し

1. サーバー API [会議室グループの作成](/ja/open/development/create-meeting-room-groups) を呼び出し、会議室グループの戻り値 `result` フィールド、すなわち会議室グループ ID を取得します。

   ```java lines theme={"theme":{"light":"github-light","dark":"github-dark"}}
   public void createRoomsGroups() throws Exception {
           com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config();
           config.protocol = "https";
           config.regionId = "central";
           com.aliyun.dingtalkrooms_1_0.Client client = new com.aliyun.dingtalkrooms_1_0.Client(config);
           com.aliyun.dingtalkrooms_1_0.models.CreateMeetingRoomGroupHeaders createMeetingRoomGroupHeaders = new com.aliyun.dingtalkrooms_1_0.models.CreateMeetingRoomGroupHeaders();
           createMeetingRoomGroupHeaders.xAcsDingtalkAccessToken = "accessToken";
           com.aliyun.dingtalkrooms_1_0.models.CreateMeetingRoomGroupRequest createMeetingRoomGroupRequest = new com.aliyun.dingtalkrooms_1_0.models.CreateMeetingRoomGroupRequest()
                   .setUnionId("E9CS6X*******eN7QiEiE")
                   .setGroupName("第一グループ")
                   .setParentGroupId(0L);
           try {
               CreateMeetingRoomGroupResponse meetingRoomGroupWithOptions = client.createMeetingRoomGroupWithOptions(createMeetingRoomGroupRequest, createMeetingRoomGroupHeaders, new RuntimeOptions());
               System.out.println(JSON.toJSONString(meetingRoomGroupWithOptions.getBody()));
           } catch (TeaException err) {
               if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
                   // err には code と message 属性が含まれ、問題の特定に役立ちます
                   System.out.println(err.code);
                   System.out.println(err.message);
               }
           } catch (Exception _err) {
               TeaException err = new TeaException(_err.getMessage(), _err);
               if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
                   // err には code と message 属性が含まれ、問題の特定に役立ちます
                   System.out.println(err.code);
                   System.out.println(err.message);
               }
           }
       }
   ```
2. 会議室グループ ID に基づき、サーバー API [会議室グループ情報の更新](/ja/open/development/update-meeting-room-groups) を呼び出して、会議室グループ情報の更新操作を実行します。

   ```java lines theme={"theme":{"light":"github-light","dark":"github-dark"}}
    public void updateRoomsGroups() throws Exception {
           com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config();
           config.protocol = "https";
           config.regionId = "central";
           com.aliyun.dingtalkrooms_1_0.Client client = new com.aliyun.dingtalkrooms_1_0.Client(config);
           com.aliyun.dingtalkrooms_1_0.models.UpdateMeetingRoomGroupHeaders updateMeetingRoomGroupHeaders = new com.aliyun.dingtalkrooms_1_0.models.UpdateMeetingRoomGroupHeaders();
           updateMeetingRoomGroupHeaders.xAcsDingtalkAccessToken = "accessToken";
           com.aliyun.dingtalkrooms_1_0.models.UpdateMeetingRoomGroupRequest updateMeetingRoomGroupRequest = new com.aliyun.dingtalkrooms_1_0.models.UpdateMeetingRoomGroupRequest()
                   .setUnionId("E9CS6X*******eN7QiEiE")
                   .setGroupName("私の第一グループ")
                   .setGroupId(39L);
           try {
               UpdateMeetingRoomGroupResponse updateMeetingRoomGroupResponse = client.updateMeetingRoomGroupWithOptions(updateMeetingRoomGroupRequest, updateMeetingRoomGroupHeaders, new RuntimeOptions());
               System.out.println(JSON.toJSONString(updateMeetingRoomGroupResponse.getBody()));
           } catch (TeaException err) {
               if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
                   // err には code と message 属性が含まれ、問題の特定に役立ちます
                   System.out.println(err.code);
                   System.out.println(err.message);
               }
           } catch (Exception _err) {
               TeaException err = new TeaException(_err.getMessage(), _err);
               if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
                   // err には code と message 属性が含まれ、問題の特定に役立ちます
                   System.out.println(err.code);
                   System.out.println(err.message);
               }
           }
       }
   ```
3. サーバー API [会議室グループリストの照会](/ja/open/development/query-meeting-rooms-groups) を呼び出して、会議室グループリストのコンテンツを取得します。

   ```java lines theme={"theme":{"light":"github-light","dark":"github-dark"}}
    public void RoomsGroupsList() throws Exception {
           com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config();
           config.protocol = "https";
           config.regionId = "central";
           com.aliyun.dingtalkrooms_1_0.Client client = new com.aliyun.dingtalkrooms_1_0.Client(config);
           com.aliyun.dingtalkrooms_1_0.models.QueryMeetingRoomGroupListHeaders queryMeetingRoomGroupListHeaders = new com.aliyun.dingtalkrooms_1_0.models.QueryMeetingRoomGroupListHeaders();
           queryMeetingRoomGroupListHeaders.xAcsDingtalkAccessToken = "accessToken";
           com.aliyun.dingtalkrooms_1_0.models.QueryMeetingRoomGroupListRequest queryMeetingRoomGroupListRequest = new com.aliyun.dingtalkrooms_1_0.models.QueryMeetingRoomGroupListRequest()
                   .setUnionId("E9CS6X*******eN7QiEiE");
           try {
               QueryMeetingRoomGroupListResponse queryMeetingRoomGroupListResponse = client.queryMeetingRoomGroupListWithOptions(queryMeetingRoomGroupListRequest, queryMeetingRoomGroupListHeaders, new RuntimeOptions());
               System.out.println(JSON.toJSONString(queryMeetingRoomGroupListResponse.getBody()));
           } catch (TeaException err) {
               if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
                   // err には code と message 属性が含まれ、問題の特定に役立ちます
                   System.out.println(err.code);
                   System.out.println(err.message);
               }
           } catch (Exception _err) {
               TeaException err = new TeaException(_err.getMessage(), _err);
               if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
                   // err には code と message 属性が含まれ、問題の特定に役立ちます
                   System.out.println(err.code);
                   System.out.println(err.message);
               }
           }
       }
   ```
4. 会議室グループ ID に基づき、サーバー API [会議室グループ情報の照会](/ja/open/development/query-meeting-room-groups) を呼び出して、個別の会議室グループの詳細コンテンツ情報を取得します。

   ```java lines theme={"theme":{"light":"github-light","dark":"github-dark"}}
   public void RoomsGroupsInfo() throws Exception {
           com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config();
           config.protocol = "https";
           config.regionId = "central";
           com.aliyun.dingtalkrooms_1_0.Client client = new com.aliyun.dingtalkrooms_1_0.Client(config);
           com.aliyun.dingtalkrooms_1_0.models.QueryMeetingRoomGroupHeaders queryMeetingRoomGroupHeaders = new com.aliyun.dingtalkrooms_1_0.models.QueryMeetingRoomGroupHeaders();
           queryMeetingRoomGroupHeaders.xAcsDingtalkAccessToken = "accessToken";
           com.aliyun.dingtalkrooms_1_0.models.QueryMeetingRoomGroupRequest queryMeetingRoomGroupRequest = new com.aliyun.dingtalkrooms_1_0.models.QueryMeetingRoomGroupRequest()
                   .setUnionId("E9CS6X*******eN7QiEiE");
           try {
               QueryMeetingRoomGroupResponse queryMeetingRoomGroupResponse = client.queryMeetingRoomGroupWithOptions("39", queryMeetingRoomGroupRequest, queryMeetingRoomGroupHeaders, new RuntimeOptions());
               System.out.println(JSON.toJSONString(queryMeetingRoomGroupResponse.getBody()));
           } catch (TeaException err) {
               if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
                   // err には code と message 属性が含まれ、問題の特定に役立ちます
                   System.out.println(err.code);
                   System.out.println(err.message);
               }

           } catch (Exception _err) {
               TeaException err = new TeaException(_err.getMessage(), _err);
               if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
                   // err には code と message 属性が含まれ、問題の特定に役立ちます
                   System.out.println(err.code);
                   System.out.println(err.message);
               }
           }
       }
   ```
5. 会議室グループ ID に基づき、サーバー API [会議室グループの削除](/ja/open/development/delete-a-conference-room-group) を呼び出して、会議室グループの削除操作を実行します。

### 説明

会議室グループ配下に会議室が存在する場合、当該会議室グループは削除できません。

```java lines theme={"theme":{"light":"github-light","dark":"github-dark"}}
 public void  deleteRoomsGroups() throws Exception {
        com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config();
        config.protocol = "https";
        config.regionId = "central";
        com.aliyun.dingtalkrooms_1_0.Client client = new com.aliyun.dingtalkrooms_1_0.Client(config);
        com.aliyun.dingtalkrooms_1_0.models.DeleteMeetingRoomGroupHeaders deleteMeetingRoomGroupHeaders = new com.aliyun.dingtalkrooms_1_0.models.DeleteMeetingRoomGroupHeaders();
        deleteMeetingRoomGroupHeaders.xAcsDingtalkAccessToken = "accessToken";
        com.aliyun.dingtalkrooms_1_0.models.DeleteMeetingRoomGroupRequest deleteMeetingRoomGroupRequest = new com.aliyun.dingtalkrooms_1_0.models.DeleteMeetingRoomGroupRequest()
                .setUnionId("E9CS6X*******eN7QiEiE");
        try {
            DeleteMeetingRoomGroupResponse deleteMeetingRoomGroupResponse = client.deleteMeetingRoomGroupWithOptions("40", deleteMeetingRoomGroupRequest, deleteMeetingRoomGroupHeaders, new RuntimeOptions());
            System.out.println(JSON.toJSONString(deleteMeetingRoomGroupResponse.getBody()));
        } catch (TeaException err) {
            if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
                // err には code と message 属性が含まれ、問題の特定に役立ちます
                System.out.println(err.code);
                System.out.println(err.message);
            }
        } catch (Exception _err) {
            TeaException err = new TeaException(_err.getMessage(), _err);
            if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
                // err には code と message 属性が含まれ、問題の特定に役立ちます
                System.out.println(err.code);
                System.out.println(err.message);
            }
        }
    }
```
