【GAS×ZOOM API】 미팅을 만드는 방법

안녕하세요! GoogleAppsScript를 사용한 업무 효율화에 열중하는 초보자 프로그래머, 타로입니다.

오늘은 GoogleAppsScript(GAS)에서 ZOOM 미팅을 만드는 방법에 대해 자세히 쓰고 싶습니다!

기사를 쓰는데 있어서, 이 근처의 기사를 많이 참고로 했습니다. 매번 매번, 앞서의 분들에게는 감사입니다.

  • How to Create Zoom Meetings with Google Script ← 영어이지만 가장 알기 쉽게 친절!

  • Zoom API에서 미팅 만들기 사용 ← 위의 기사만으로는 왠지 작성할 수 없고, 미팅을 만들 때의 파라미터는 이쪽으로부터 빌렸습니다!

  • 이 기사는 다음 기사의 지식을 기반으로합니다.
    【GAS×ZOOM API】초학자에게도 상냥하게 JWT 인증의 방법을 해설해 본다
    JWT 인증에 대해 아직 이해하지 못했다면 먼저 위의 기사를 읽으십시오.

    미팅을 만드는 방법



    ZOOMAPI의 공식 참조 를 살펴보면 미팅을 만드는 메소드를 쉽게 찾을 수 있습니다.

    POST로 만들 수 있을 것 같네요.
    한 가지 주의하는 것은 userID 를 취득해야 하는 것입니다.

    userID 얻기



    userID를 얻는 코드는 다음과 같이 작성할 수 있습니다.
    function getZoomUserId() {
      const request = UrlFetchApp.fetch('https://api.zoom.us/v2/users/', {
        method: 'GET',
        contentType: 'application/json',
        headers: { Authorization: `Bearer ${getZoomAccessToken()}` }, // 前回の記事で書いたJWT Token
      });
      const users = JSON.parse(request.getContentText());
      return users.users[0].id;
    }
    
    UrlFetchApp.fetch 는 지정한 URL의 정보를 contentType 로 지정한 데이터 형식으로 가져오는 GAS에 등록된 메서드입니다. 이번에는 JSON 형식으로 취득합니다.
    취득하는 정보는 이런 느낌. ( 공식 문서 부터)
    {
      "page_count": 1,
      "page_number": 1,
      "page_size": 30,
      "total_records": 1,
      "users": [
        {
          "id": "z8yAAAAA8bbbQ",
          "first_name": "Melina",
          "last_name": "Ghimire",
          "email": "[email protected]",
          "type": 2,
          "pmi": 581111112,
          "timezone": "America/Los_Angeles",
          "verified": 1,
          "dept": "",
          "created_at": "2018-11-15T01:10:08Z",
          "last_login_time": "2019-09-13T21:08:52Z",
          "last_client_version": "4.4.55383.0716(android)",
          "pic_url": "https://lh4.googleusercontent.com/-someurl/photo.jpg",
          "im_group_ids": [
            "Abdsjkfhdhfj"
          ],
          "status": "active"
        }
      ]
    }
    

    와우, ,, 뭔가 신도,,,, 라는 느낌이군요 (웃음)
    원하는 것은 ID이므로,
    return users.users[0].id;
    

    이렇게 쓰면 원하는 사용자 ID를 얻을 수 있습니다!
    덧붙여서, 복수의 유저가 등록되어 있었을 경우, 상기의 방법으로는 유저 ID를 취득할 수 없습니다 (뭐 그렇게 어렵지 않을 것 같습니다만,,,).

    다만, ZOOM으로 복수 유저 등록이라고 하는 것이 조금 잘 모르기 때문에, 신경쓰지 않고 갑시다. 일단 이것으로 사용자 ID를 얻을 수있었습니다.

    미팅 만들기



    그러면 드디어 미팅을 작성해 갑니다. 코드는 이런 느낌.
    function createZoomMeeting() {  
      const meetingOptions = {
      "topic":"GASでZOOMミーティング作成",
      "type": "2", // ミーティングのタイプを入力、1, 2, 3, 8のいずれかを選択
      "start_time": "2021-03-03T10:00:00Z", //開始時刻を入力
      "duration": "10", // ミーティングの時間を設定
      "timezone": "Asia/Tokyo", // タイムゾーンは日本にしましょう
      "password": "", // パスワードを設定したい場合はこちら
      "agenda": "",
      // 以下細かい設定が続きますので適度に読み飛ばしてください
      "settings": {
        "host_video": "false",
        "participant_video": "false",
        "cn_meeting": "false",
        "in_meeting": "false",
        "join_before_host": "false",
        "mute_upon_entry": "false",
        "watermark": "false",
        "use_pmi": "false",
        "approval_type": "0",
        "registration_type": "1",
        "audio": "both",
        "auto_recording": "local",
        "enforce_login": "false",
        "enforce_login_domains": "",
        "alternative_hosts": "",
        "global_dial_in_countries": [
          ""
        ],
        "registrants_email_notification": "false"
        }
      };
    
      const request = UrlFetchApp.fetch(
        `https://api.zoom.us/v2/users/${getZoomUserId()}/meetings`,
        {
          method: 'POST',
          contentType: 'application/json',
          headers: { Authorization: `Bearer ${getZoomAccessToken()}` },
          payload: JSON.stringify(meetingOptions),
        }
      );
    }
    

    Type의 분류는 이하
    1. Instant Meeting
    2. Scheduled Meeting
    3. Recurring Meeting with no fixed Time
    8. Recurring Meeting with no fixed Time(왜 "8?")
    Recurring은 『반복』이라는 뜻이군요. ZOOM으로 설정할 수 있는 정례의 MTG는 녀석입니다.
    meetingOptions 의 파라미터가 많은 것만으로, 나머지는 심플. 중요한 것은 여기 부분입니다.
      const request = UrlFetchApp.fetch(
        `https://api.zoom.us/v2/users/${getZoomUserId()}/meetings`,
        {
          method: 'POST',
          contentType: 'application/json',
          headers: { Authorization: `Bearer ${getZoomAccessToken()}` },
          payload: JSON.stringify(meetingOptions),
        }
      );
    

    방금 취득한 UserId마지막 기사 에서 취득한 JWT Token 를 건네주면 MTG가 작성됩니다!

    생각보다 쉽게 ​​할 수 있었어요!

    이상, 참고가 되면 기쁩니다! ZOOM의 API 정보도 인터넷에 거의 떨어지지 않았어요~~~~.
    앞으로도, 여러가지 트라이 해 봐 얻은 지견을 공유할 수 있으면 좋겠습니다!

    좋은 웹페이지 즐겨찾기