サービスアカウントで Google Calendar に接続する方法
Google Calendar は、Google が開発した無料のウェブ・モバイルアプリケーションで、スケジュール管理に広く利用されています。CData のコネクティビティプラットフォームと組み合わせることで、カレンダー、イベント、参加者などのデータをリアルタイムに読み書きできるようになります。
この記事では、サービスアカウントを使用して Google Calendar にアクセスする方法を解説します。サービスアカウントは通常、個人ユーザーではなく、アプリケーションやサービスを表すアカウントです。ここでは、認可された API 呼び出しによるプログラム的なアクセス(CData ソリューションが Google Calendar と連携する方法)について説明していきます。
前提条件
- Google Calendar アカウント
- CData JDBC Driver for Google Calendar(こちらからダウンロード)
- JDBC 対応のクエリツール(この記事では DBVizualizer を使用します。こちらからダウンロード)
手順の概要
- Google Calendar API の有効化
- サービスアカウントの作成
- JDBC 経由でのライブカレンダーデータの操作
ステップ1:Google Calendar API の有効化
- Google Cloud Console にアクセスします。

- API とサービスを有効化 をクリックします。
- 検索フィールドに「Google Calendar API」と入力し、検索結果から Google Calendar API を選択します。
- Google Calendar API のページで 有効にする をクリックします。

ステップ2:サービスアカウントの作成
サービスアカウントは、OAuth フローでドメイン内のユーザーに代わって Google API にアクセスするために使用できます。ドメイン管理者は、サービスアカウントにドメイン全体のアクセス権を委任できます。
それでは、新しいサービスアカウントを作成していきましょう。
- Google Cloud Console にアクセスします。
- 新しいプロジェクトを作成するか、既存のプロジェクトを選択します。
- 左側のナビゲーションメニューで 認証情報 を選択します。

- オプションメニュー( )を開き、 認証情報を作成 を選択します。

- サービスアカウント をクリックします。

- サービスアカウントの作成 ページで、サービスアカウント名、サービスアカウント ID、必要に応じて説明を入力します。

サービスアカウントのメールアドレスをメモしておいてください(後で使用します)。形式は通常 my-service-account-id@service-account-agent.iam.gserviceaccount.com のようになります。
- 必要に応じて権限とアクセス権を持つプリンシパルを設定し、完了 をクリックします。

- Cloud Console の 認証情報 ページに戻り、サービスアカウント セクションまでスクロールして、作成したサービスアカウントを選択します。

- 鍵 タブをクリックします。
- 鍵を追加 > 新しい鍵を作成 をクリックします。

- サポートされている鍵の種類を選択し(この記事では JSON を使用します)、作成 をクリックします。

鍵が自動的にデバイスにダウンロードされ、鍵に関する追加情報が表示されます。
- 追加情報を記録しておきましょう。

ステップ3:サービスアカウントとカレンダーを共有
サービスアカウントで Google Calendar にアクセスするには、個々のカレンダーをサービスアカウントと共有する必要があります。カレンダーの追加は API を通じてのみサービスアカウントで承認できるため、手動で行うと手間がかかります。CData のコネクタを使用すると、基本的な SQL でカレンダーを承認できます。この記事では DBVisualizer を使用しますが、JDBC 接続に対応した任意の SQL ツール(またはカスタム Java アプリケーション)で同様の操作が可能です。
ステップ3.1:Google Console でカレンダーを追加
- Google Calendar を開きます。
- カレンダーメニューを展開します(カレンダーの一覧が表示されていない場合)。
- カレンダーのオプションメニュー( )を開き、設定と共有 を選択します。

- 特定のユーザーと共有 をクリックまたはスクロールします。

- ユーザーを追加 をクリックします。
- サービスアカウントのメールアドレス(通常 my-service-account-id@service-account-agent.iam.gserviceaccount.com の形式)を入力し、権限を割り当てて 送信 をクリックします。

ステップ3.2:サービスアカウントで Google Calendar に接続
- JDBC ドライバーの接続文字列ウィザードを開きます。ターミナルから以下を実行します:
java -jar /PATH/TO/CData JDBC Driver for Google Calendar/lib/cdata.jdbc.googlecalendar.jar
- 接続文字列を構築するために接続を設定します:
- AuthScheme を「OAuthJWT」に設定
- InitiateOAuth を「GETANDREFRESH」に設定
- OAuth JWT Cert Type を「GOOGLEJSON」に設定
- OAuth JWT Cert に先ほどダウンロードした鍵のパスを設定

- 「Test Connection」をクリックして設定を確認します。
- SQL ツールで使用するために接続文字列をコピーします。以下のような形式になります:
jdbc:googlecalendar:AuthScheme=OAuthJWT;InitiateOAuth=GETANDREFRESH;OAuthJWTCert=/Users/jerodj/Downloads/vocal-tracker-443517-i3-6c1092be2c77.json;OAuthJWTCertType=GOOGLEJSON;
ステップ3.3:カレンダーの追加を完了してライブデータを操作
- JDBC ツールを開き、上記で保存した接続文字列を使用して接続します(DBVisualizer で CData JDBC Driver for Google Calendar を使用する詳細な手順については、ナレッジベースの記事を参照してください)。
- SQL の INSERT 文を使用して、カレンダー ID(通常はカレンダー所有者のメールアドレス)でカレンダーの招待を承認します:
INSERT INTO "CData"."GoogleCalendar"."Calendars" (id) VALUES ("user@domain.com") - これで、JDBC 接続経由でカレンダーが利用可能になります:

これで、サービスアカウントに付与されたカレンダー権限に基づいて、サービスアカウント経由でライブの Google Calendar データを操作できるようになりました。
無料トライアルと詳細情報
Google Calendar 用のドライバーの最新バージョンはこちらから入手できます。すべてのドライバーには 30日間の無料トライアルが含まれています。また、既存のツールやアプリケーションでドライバーを使用する方法について詳しく知りたい場合は、ナレッジベースをご覧ください。
ご不明な点がございましたら、サポートチームがいつでもお手伝いいたします。