サービスアカウントで Google Calendar に接続する方法



Google Calendar は、Google が開発した無料のウェブ・モバイルアプリケーションで、スケジュール管理に広く利用されています。CData のコネクティビティプラットフォームと組み合わせることで、カレンダー、イベント、参加者などのデータをリアルタイムに読み書きできるようになります。

この記事では、サービスアカウントを使用して Google Calendar にアクセスする方法を解説します。サービスアカウントは通常、個人ユーザーではなく、アプリケーションやサービスを表すアカウントです。ここでは、認可された API 呼び出しによるプログラム的なアクセス(CData ソリューションが Google Calendar と連携する方法)について説明していきます。

前提条件

  1. Google Calendar アカウント
  2. CData JDBC Driver for Google Calendar(こちらからダウンロード
  3. JDBC 対応のクエリツール(この記事では DBVizualizer を使用します。こちらからダウンロード

手順の概要

  1. Google Calendar API の有効化
  2. サービスアカウントの作成
  3. JDBC 経由でのライブカレンダーデータの操作

ステップ1:Google Calendar API の有効化

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

ステップ2:サービスアカウントの作成

サービスアカウントは、OAuth フローでドメイン内のユーザーに代わって Google API にアクセスするために使用できます。ドメイン管理者は、サービスアカウントにドメイン全体のアクセス権を委任できます。

それでは、新しいサービスアカウントを作成していきましょう。

  1. Google Cloud Console にアクセスします。
  2. 新しいプロジェクトを作成するか、既存のプロジェクトを選択します。
  3. 左側のナビゲーションメニューで 認証情報 を選択します。
  4. オプションメニュー( )を開き、 認証情報を作成 を選択します。
  5. サービスアカウント をクリックします。
  6. サービスアカウントの作成 ページで、サービスアカウント名、サービスアカウント ID、必要に応じて説明を入力します。

    サービスアカウントのメールアドレスをメモしておいてください(後で使用します)。形式は通常 my-service-account-id@service-account-agent.iam.gserviceaccount.com のようになります。

  7. 必要に応じて権限とアクセス権を持つプリンシパルを設定し、完了 をクリックします。
  8. Cloud Console の 認証情報 ページに戻り、サービスアカウント セクションまでスクロールして、作成したサービスアカウントを選択します。
  9. タブをクリックします。
  10. 鍵を追加 > 新しい鍵を作成 をクリックします。
  11. サポートされている鍵の種類を選択し(この記事では JSON を使用します)、作成 をクリックします。

    鍵が自動的にデバイスにダウンロードされ、鍵に関する追加情報が表示されます。

  12. 追加情報を記録しておきましょう。

ステップ3:サービスアカウントとカレンダーを共有

サービスアカウントで Google Calendar にアクセスするには、個々のカレンダーをサービスアカウントと共有する必要があります。カレンダーの追加は API を通じてのみサービスアカウントで承認できるため、手動で行うと手間がかかります。CData のコネクタを使用すると、基本的な SQL でカレンダーを承認できます。この記事では DBVisualizer を使用しますが、JDBC 接続に対応した任意の SQL ツール(またはカスタム Java アプリケーション)で同様の操作が可能です。

ステップ3.1:Google Console でカレンダーを追加

  1. Google Calendar を開きます。
  2. カレンダーメニューを展開します(カレンダーの一覧が表示されていない場合)。
  3. カレンダーのオプションメニュー( )を開き、設定と共有 を選択します。
  4. 特定のユーザーと共有 をクリックまたはスクロールします。
  5. ユーザーを追加 をクリックします。
  6. サービスアカウントのメールアドレス(通常 my-service-account-id@service-account-agent.iam.gserviceaccount.com の形式)を入力し、権限を割り当てて 送信 をクリックします。

ステップ3.2:サービスアカウントで Google Calendar に接続

  1. JDBC ドライバーの接続文字列ウィザードを開きます。ターミナルから以下を実行します:
    java -jar /PATH/TO/CData JDBC Driver for Google Calendar/lib/cdata.jdbc.googlecalendar.jar
  2. 接続文字列を構築するために接続を設定します:
    • AuthScheme を「OAuthJWT」に設定
    • InitiateOAuth を「GETANDREFRESH」に設定
    • OAuth JWT Cert Type を「GOOGLEJSON」に設定
    • OAuth JWT Cert に先ほどダウンロードした鍵のパスを設定
  3. 「Test Connection」をクリックして設定を確認します。
  4. SQL ツールで使用するために接続文字列をコピーします。以下のような形式になります:
    jdbc:googlecalendar:AuthScheme=OAuthJWT;InitiateOAuth=GETANDREFRESH;OAuthJWTCert=/Users/jerodj/Downloads/vocal-tracker-443517-i3-6c1092be2c77.json;OAuthJWTCertType=GOOGLEJSON;

ステップ3.3:カレンダーの追加を完了してライブデータを操作

  1. JDBC ツールを開き、上記で保存した接続文字列を使用して接続します(DBVisualizer で CData JDBC Driver for Google Calendar を使用する詳細な手順については、ナレッジベースの記事を参照してください)。
  2. SQL の INSERT 文を使用して、カレンダー ID(通常はカレンダー所有者のメールアドレス)でカレンダーの招待を承認します:
    INSERT INTO "CData"."GoogleCalendar"."Calendars" (id) VALUES ("user@domain.com")
  3. これで、JDBC 接続経由でカレンダーが利用可能になります:

これで、サービスアカウントに付与されたカレンダー権限に基づいて、サービスアカウント経由でライブの Google Calendar データを操作できるようになりました。

無料トライアルと詳細情報

Google Calendar 用のドライバーの最新バージョンはこちらから入手できます。すべてのドライバーには 30日間の無料トライアルが含まれています。また、既存のツールやアプリケーションでドライバーを使用する方法について詳しく知りたい場合は、ナレッジベースをご覧ください。

ご不明な点がございましたら、サポートチームがいつでもお手伝いいたします。

始める準備はできましたか?

Google Calendar 用ドライバーの詳細、または無料トライアルをダウンロード:

今すぐダウンロード