この記事は、Google Calendarの予定(イベント)情報をTROCCOのカスタムコネクタを使って取得するための方法を解説するものです。
予定情報はカレンダーのUI上ではスケジュールを確認するために使う事が主ですが、データ活用観点ではビジネス上の重要な活動や発信が行われたマイルストーンデータとして捉えることもできます。

また、カスタムコネクタとはConnector Builderで作成されたTROCCOのコネクタを指しています。Connector Builderについてご存知ない方は、「Connector Builder(コネクタビルダー)とは」の記事から先にお読みください。

予定データのユースケース例

予定データの使い道は多くありますが、例えば何かの実行スケジュールをGoogle Calendarで集中管理し、その実行の前後でさまざまな事業データがどの様に変化したかを確認するという様な活用をすることも可能です。

*イメージ例:プレスリリース(棒グラフ:Google Calendarからのデータ)と問い合わせ発生数(折れ線グラフ:フォーム送信数)を掛け合わせて、リリース前後の問い合わせ数を可視化する例

上記のイメージ例では、9月20日のリリース直後に問い合わせがスパイクしていることが読み取れます。アプローチできている客層にとって有意な発信であった可能性があるため、内容を分析し、次以降のリリースに活かすなどのアクションを取る事ができます。

カスタムコネクタの作成・利用手順

ここから、Google Calendar APIのEvents: Listというエンドポイントを対象にカスタムコネクタの具体的な作成手順をご紹介していきます。

STEP 1:Google Calendar APIとOAuthクライアントを準備する

Google Calendarのデータを外部から取得するには、Google Cloudの「Calendar API」と「Auth Platform」を利用します。
そこで、まずはGoogle Cloudのプロジェクトを用意し、Google Calendar APIを有効にします。

Calendar APIを有効化したら、次に外部から認証を行うためのクライアントを「Auth Platform」で作成します。「クライアント」メニューから「クライアントを作成」をクリックします。

それぞれ次の要領で入力します。

  • アプリケーションの種類:ウェブアプリケーション
  • 名前:任意の名前(TROCCOで使用するクライアントとしてわかる様な名前が望ましい)
  • 承認済みのリダイレクトURI:https://trocco.io/connections/custom_connector/callback

入力が完了したら「作成」ボタンをクリックします。

クライアントIDとシークレットが表示されるため、控えておきましょう。

次に、クライアントがアクセスできるデータ範囲を絞るためスコープ設定を行います。
クライアント作成の画面から「データアクセス」を選択します。
ここで「スコープを追加または削除」をクリックし、下記スコープを指定します。

https://www.googleapis.com/auth/calendar.events.readonly

更新後、「機密性の高いスコープ」の項目に指定したスコープが追加された事を確認します。

今回はカレンダーイベント(予定)を読むことができれば事足りるので、event.readonlyを使用します。Google Calendar APIで利用可能なスコープの一覧はこちらのドキュメントで確認できます。

STEP 2 :目的のカレンダーIDを取得

後続のステップで使用することになる、カレンダー固有のIDを取得しておきます。
まずはGoogle Calendarにアクセスし、対象カレンダーの「設定と共有」を開きます。

設定項目の中に「カレンダーの統合」というセクションがあり、この中に「カレンダーID」が表示されています。
後ほど設定で利用しますので、これを控えておきます。

STEP 3:ベースURLと認証情報の設定

次に、APIドキュメントを参照しながらカスタムコネクタの設定をおこなっていきます。
TROCCOのカスタムコネクタ作成ページへ移り、新規作成画面へ遷移します。
まずはベースURLに下記を入力します。

https://www.googleapis.com/calendar

続いて、認証情報の設定に進みます。
それぞれ下記の様に設定します。

ここまで設定ができたら、一度カスタムコネクタを「保存」しておきます。

STEP 4:エンドポイントの設定

先ほど保存したカスタムコネクタを再度開き、エンドポイントの作成を呼び出します。

上から順番に設定していきましょう。

  • 名前:任意の名称(APIエンドポイントに公式に付けられている名前をそのままつける事を推奨)
  • パス:/v3/calendars/{calendarId}/events
  • パスパラメータ:
    • 表示名:calendarID
    • 値:calendarID
  • HTTPメソッド:GET
  • パラメータ:
    • パラメータ名:maxResults
    • 表示名:最大取得件数(任意の名前で可)
    • デフォルト値:2500

Events: listエンドポイントのAPIドキュメントで示されているエンドポイントURLは下記の通りです。

https://www.googleapis.com/calendar/v3/calendars/{calendarID}/events

URLの途中にcalendarIDを指定する部分があり、カレンダー単位でイベントのリストデータを取得できます。
カスタムコネクタでは「パスパラメータ」を使うことができますので、このcalendarIDを指定します。
具体的には、パスのURIの中でcalendarIDにあたる部分を波括弧で囲って記入します。

デフォルトでは250件までの予定データを取得します。
「maxResults」というパラメータを指定することで、最大取得数を操作できます。
最大値は2500ですので、これを上限一杯にしておきます。

「JSONPathルート」は下記の様にしておきます。

$.items

レスポンス直下のitemsという項目に目的のイベントデータが入ってくるためです。
今回はページング設定を行いませんが、全件取得したい場合は、「nextPageToken」を利用し、カーソルベースのページネーション設定を行ってください。

STEP 5:接続情報の設定

続いて、接続情報の設定を行います。
エンドポイント設定画面下部の「接続確認」セクションに「接続情報を追加」ボタンがありますので、これを利用すると便利です。

接続情報の作成画面に遷移したら、任意の名前を付けます。

クライアントID、クライアントシークレットは、それぞれSTEP1で作成したクライアントのものを設定します。
スコープには前のステップで設定した下記のスコープと同じものを指定します。

https://www.googleapis.com/auth/calendar.events.readonly

スコープまで入力ができたら「認証」ボタンをクリックして疎通を試みます。
この疎通を通じてリフレッシュトークンを受け取る仕組みになっているため、この工程を省いて次に進むことができませんのでご注意下さい。
(*保存自体は可能ですが、接続テストや実際のデータ取得が行えません。)

OAuth2の権限移譲画面(ポップアップ)が出てきますので、カレンダーにアクセス可能なアカウントを選択し、権限を渡します。

認証成功表示が出れば、クライアントを通じての認証が成功しています。

同画面の「保存」をクリックして、接続情報を保存します。

STEP 6:接続テスト

エンドポイントの設定画面へ戻り、先ほど作成した接続情報を利用するために「接続情報を読み込む」をクリックします。
すると保存した接続情報を選択できる様になるため、これを選びます。
パスパラメータにはSTEP2で取得した対象のカレンダーIDを入力し、「接続を確認」をクリックします。

下イメージの様な形で、リクエストに成功した旨の表示が出ればOKです。

エンドポイントの保存を忘れずに行いましょう。

STEP 7:転送設定で使用する

メニューの「データ転送→転送設定→転送設定の新規作成」と進み、転送元にカスタムコネクタ、転送先にDWH(今回はBigQuery)を設定します。

転送元 カスタムコネクタの設定のセクションでは、先ほど作成したカスタムコネクタ、そして接続情報を選びます。
取得対象の欄には設定したエンドポイントのリストが表示されますので、こちらも作成したものを選びます。
カレンダーIDをパスに含める必要があるため、STEP2で取得しているカレンダーIDを記入します。

今回の例では、その時点でどのリリースがあったのかを正確に記録したいため、BigQuery側の設定では転送モードを「UPSERT(MERGE)」として指定します。
キー名には「id」を指定しましょう。

別の用途例を挙げると、予定の変更履歴を追いたいなどの場合は、「APPEND」モードを利用して同一予定IDのデータをあえて重複させるという使い方も考えられます。
ご自身のデータ利用用途に合わせて方式を検討してください。

このまま転送設定を保存し、実行を掛けます。
BigQueryにテーブルが作られ、データが閲覧できれば接続成功です。

また、スケジュール実行の機能を使って日次など定期的に実行する様な設定をかけておくと良いでしょう。
予定データの性質にもよりますが、定期的に取得して最新化することでマスターデータとしての信頼性を向上させることができます。

まとめ

Connector Builderなら、GUIベースで好きなサービスのコネクタを手軽に作成でき、TROCCOの公式コネクタと組み合わせて他のSaaSとのデータ統合や、DWHをはじめ、クラウドアプリケーションやGoogleスプレッドシートなど、さまざまなサービスへのデータ転送がすぐに実現できます。

コネクタの作成時にはWeb APIの知識が必要ですが、一度作成したコネクタは設定画面から簡単に何度でも再利用できます。そのため、一度コネクタを作成すれば、APIの専門知識がない現場担当者でも、手軽にデータ連携や運用の自動化が実現でき、結果として設計・実装・運用にかかる負担を大幅に削減し、開発・保守の効率向上につながります。

また、Connector Builderで作成したカスタムコネクタは、TROCCOの公式コネクタと同様のパフォーマンス・セキュリティを兼ね備えており、TROCCOに搭載されているワークフロー/定期実行/通知などの運用保守機能も利用できるため、自社で実装から運用まで行う場合と比較し、大幅なコスト削減が期待できます。今回のGoogle CalendarのようなAPIを介したデータ連携の初期開発・運用コストを最小化したい場合、「TROCCO」のConnector Builderは有力な選択肢となります。

ぜひ無料トライアルでその使いやすさを体験してみてください!

TROCCO ライター

TROCCOブログの記事ライター データマネジメント関連、TROCCOの活用記事などを広めていきます!