📚

[GoogleAppsScript] GoogleCalendarの予定に埋まっているZoomのURLを取る方法

2021/07/07に公開

概要

Google Calendar を Zoom の Add-on で連携している場合に設定された Zoom のミーティング URL を API 経由で取得したかった。
Google App Script の Calendar の CalendarEvent クラスのメソッドでは不可能。 
REST API を用いて、イベントの conferenceData を取得する必要があります。

事の起こりは...

設定した MTG を一覧にして、それを Web で (HTML 形式で) 公開したい、ということで、既存のカレンダーに設定された MTG から タイトル、URL、パスコード等を取得しようと思ったのでした。

とりあえずこうしてみるよね

function myFunction() {
  const events =   CalendarApp.getDefaultCalendar().getEventsForDay(new Date());
  console.log(events[0].getLocation());

}

ところが手動で MTG 場所として設定された URL は取れるものの、 Add-on で設定された URL は取れなかったのでした。
ちなみに Add-on で設定されるとこんな感じになります。

それっぽい関数はないかと見てみるものの

なさそうです。

CalendarEvent のリファレンス を見てもなさそう。

ちなみに、getAllTagKeys() を使うと、 meetingId , meetingParams というのが取れるので、 getTag("meetingParams") してみましたが、下記のようなデータしか取れませんでした

{"topic":"テスト","type":2,"start_time":"2021-07-07T17:00:00+09:00","duration":30,"timezone":"Asia/Tokyo"}

調べてみると

標準では Google Meet が使えるので、その場合の Hangout の URL はそもそもどこに入っているのかを調べましたがやはり meetingParams 等に入っているわけではなかったです。

ぐぐるしかないです。

calendar api hangout url でぐぐってみました。

見つかったのは Events | Calendar API | Google Developers です。

ここには hangoutLink というのもありますが、 conferenceData というのが入っており、どうやらこれが本命のようです。

function myFunction() {
  const calendarId = "xxxxxxx@gmail.com";
  Calendar.Events.list(calendarId, {});
}

とすれば良さそうですが、この時点で Calendar.Events とかで補完が効いてくれません。

サービスの追加

このようにサービスとして Calendar API を組み込む必要がありました。

  Calendar.Events.list(calendarId, {})["items"].forEach( (event) => {
    console.log(Calendar.Events.get(calendarId, event.getId()));
  });

あとは list で取得して正常取得した場合にはレスポンスに items が含まれるので、上記のようにしたら

// 一部省略

{ 
  htmlLink: '****',
  description: '***',
  id: '***',
  status: 'confirmed',
  summary: 'タイトル',
  conferenceData: 
   {
     entryPoints: [ [Object], [Object], [Object] ],
   }
}

conferenceData.entryPoints の中に必要なデータが入っているのでそれを取得すれば良いです。

なお list メソッドにパラメータを与えないと最初から100件とかを取ってしまうのでご注意ください。
timeMin とかを与えると良いと思います。

GitHubで編集を提案

Discussion

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy