Google Calendar API セットアップガイド
OpenClaw AI秘書 + Google Calendar 連携

目次

  1. 全体アーキテクチャ
  2. 前提条件
  3. Google Calendar API の有効化 Google Chat と共用
  4. サービスアカウントに Calendar スコープを追加
  5. ドメイン全体の委任(Domain-Wide Delegation)
  6. Google Workspace 管理コンソールでの委任承認
  7. VPS への gcalcli インストールと認証設定
  8. OpenClaw からの Calendar 操作設定
  9. 動作確認
  10. よく使うコマンド一覧
  11. トラブルシューティング

全体アーキテクチャ

Google Chat Bot(セットアップガイド参照)に加え、AI秘書がユーザーの Google Calendar を直接操作できるようにします。

ユーザー ↓ メッセージ送信 Google Chat ↓ HTTP POST (webhook) GCP Chat API ↓ JWT 認証 VPS (OpenClaw Gateway) ↓ AI秘書エージェント (Claude) ↓ ツール呼び出し gcalcli / Google Calendar API ↓ サービスアカウント + ドメイン委任 Google Calendar(ユーザーのカレンダー)

必要なコンポーネント

#コンポーネント状態備考
1GCP プロジェクトGoogle Chat と共用同じプロジェクトを使用
2サービスアカウントGoogle Chat と共用Calendar スコープを追加
3Google Calendar API新規有効化GCP コンソールで有効化
4ドメイン全体の委任新規設定Workspace 管理者が設定
5gcalcli(CLI ツール)新規インストールVPS にインストール
Google Chat Bot セットアップで作成した GCP プロジェクトとサービスアカウントをそのまま使います。新たに作成する必要はありません。

前提条件

@gmail.com アカウントではドメイン全体の委任が使用できません。必ず Google Workspace(組織ドメイン)のアカウントが必要です。

1 Google Calendar API の有効化

  1. Google Chat Bot セットアップで使用した GCP プロジェクトを選択
  2. GCP Console → 「APIとサービス」「ライブラリ」
  3. 検索バーに Google Calendar API と入力
  4. 「Google Calendar API」 を選択
  5. 「有効にする」 をクリック
Google Calendar API 有効化画面
Google Chat API と同じプロジェクト内で有効化してください。プロジェクトを間違えないよう、画面上部のプロジェクト名を確認してください。

2 サービスアカウントに ドメイン全体の委任を有効化

Google Chat Bot セットアップで作成したサービスアカウントに、ドメイン全体の委任機能を有効化します。

  1. GCP Console → 「IAMと管理」「サービスアカウント」
  2. Google Chat Bot で作成したサービスアカウントをクリック
  3. 「詳細」 タブを開く
  4. 「詳細設定」 セクションの 「Google Workspace の全体の委任」 エリアを確認
  5. 「Google Workspace のドメイン全体の委任を有効にする」 にチェックを入れる
  6. 「保存」 をクリック
この画面で表示されるクライアント ID(数字)をメモしてください。次のステップで使用します。

メモする情報

項目用途
クライアント ID123456789012345678901Workspace 管理コンソールで使用
サービスアカウントメールchatbot-service@project.iam.gserviceaccount.com参照用

3 ドメイン全体の委任(Domain-Wide Delegation)

サービスアカウントがユーザーの代わりに Google Calendar を操作するために、ドメイン全体の委任を設定します。これにより、サービスアカウントがユーザーに代わって(impersonate)カレンダーの読み書きが可能になります。

仕組み

サービスアカウント ↓ "user@example.com として操作する" (impersonate) Google Calendar API ↓ user@example.com のカレンダー
ドメイン全体の委任は強力な機能です。付与するスコープ(権限)は必要最小限にしてください。

4 Google Workspace 管理コンソールでの委任承認

Google Workspace の管理者が、サービスアカウントにカレンダー操作を許可します。

  1. Google Workspace 管理コンソール管理者アカウントでログイン
  2. 「セキュリティ」「アクセスとデータ管理」「API の制御」
  3. 「ドメイン全体の委任」 セクションを開く
  4. 「新しく追加」(または「API クライアント アクセスを管理する」)をクリック
  5. 以下を入力:
項目入力値
クライアント IDStep 2 でメモしたクライアント ID(数字)
OAuth スコープ(カンマ区切り) https://www.googleapis.com/auth/calendar,https://www.googleapis.com/auth/calendar.events
  1. 「承認」 をクリック
スコープはカンマ区切りで入力してください(改行やスペースは不可)。コピー&ペーストを推奨します。

スコープの説明

スコープ権限用途
auth/calendar カレンダーの読み書き カレンダー一覧取得、カレンダー作成
auth/calendar.events 予定の読み書き 予定の追加・編集・削除・一覧表示
設定完了後、サービスアカウントは指定されたスコープの範囲内で、ドメイン内のすべてのユーザーのカレンダーを操作できるようになります。

5 VPS への gcalcli インストールと認証設定

5-1. gcalcli のインストール

# Python と pip がインストールされていることを確認
python3 --version
pip3 --version

# gcalcli をインストール
pip3 install gcalcli

5-2. サービスアカウント JSON キーの配置

Google Chat Bot セットアップで使用した JSON キーファイルを使います(新たに発行する必要はありません)。

# キーの配置先ディレクトリ作成
mkdir -p /home/ubuntu/.openclaw/credentials/

# ローカルからVPSへ転送(ローカル端末で実行)
scp -i ~/.ssh/tobelucky.pem \
  ~/Downloads/YOUR_SERVICE_ACCOUNT_KEY.json \
  root@85.131.252.54:/home/ubuntu/.openclaw/credentials/gchat-service-account.json
Google Chat と Google Calendar で同じ JSON キーファイルを使います。ファイルを2つ用意する必要はありません。

5-3. gcalcli の動作確認

# サービスアカウント + ドメイン委任で認証テスト
# --impersonate-user に対象ユーザーのメールアドレスを指定
gcalcli \
  --client-secret /home/ubuntu/.openclaw/credentials/gchat-service-account.json \
  --impersonate-user user@example.com \
  list

カレンダー一覧が表示されれば認証成功です。

user@example.com は実際のユーザーメールアドレスに置き換えてください。このユーザーのカレンダーが操作対象になります。

6 OpenClaw からの Calendar 操作設定

OpenClaw の AI秘書エージェントが Google Calendar を操作するための設定を行います。

方法 A: シェルツールとして gcalcli を呼び出す

OpenClaw のエージェントが gcalcli コマンドをシェル経由で実行します。

エージェント設定ファイル(BUSINESS.md)に追記

## Google Calendar 操作

以下のコマンドでユーザーの Google Calendar を操作できます。

### 予定の一覧表示
gcalcli --client-secret /home/ubuntu/.openclaw/credentials/gchat-service-account.json \
  --impersonate-user TARGET_USER@example.com \
  agenda "today" "7 days from now"

### 予定の追加
gcalcli --client-secret /home/ubuntu/.openclaw/credentials/gchat-service-account.json \
  --impersonate-user TARGET_USER@example.com \
  add \
  --title "会議タイトル" \
  --where "場所" \
  --when "2026-03-15 14:00" \
  --duration 60 \
  --description "会議の詳細"

### 予定の検索
gcalcli --client-secret /home/ubuntu/.openclaw/credentials/gchat-service-account.json \
  --impersonate-user TARGET_USER@example.com \
  search "キーワード"

### 予定の削除
gcalcli --client-secret /home/ubuntu/.openclaw/credentials/gchat-service-account.json \
  --impersonate-user TARGET_USER@example.com \
  delete "予定タイトル"

方法 B: MCP サーバーとして Google Calendar を接続(上級)

Google Calendar 用の MCP サーバーを構築し、OpenClaw の MCP クライアントから接続する方法です。より柔軟な操作が可能ですが、追加の開発が必要です。

まずは方法 A(gcalcli)で動作確認を行い、必要に応じて方法 B に移行することを推奨します。

7 動作確認

7-1. CLI での直接確認

  1. VPS に SSH 接続
  2. gcalcli で今週の予定を取得:
    gcalcli \
      --client-secret /home/ubuntu/.openclaw/credentials/gchat-service-account.json \
      --impersonate-user user@example.com \
      agenda "today" "7 days from now"
  3. テスト予定を追加:
    gcalcli \
      --client-secret /home/ubuntu/.openclaw/credentials/gchat-service-account.json \
      --impersonate-user user@example.com \
      add \
      --title "テスト予定(削除OK)" \
      --when "tomorrow 10:00" \
      --duration 30 \
      --noprompt
  4. Google Calendar でテスト予定が表示されることを確認
  5. テスト予定を削除

7-2. Google Chat 経由での確認

  1. Google Chat で AI秘書にメッセージ送信:
    「今週の予定を教えて」
  2. AI秘書がカレンダーの予定一覧を返答することを確認
  3. 予定追加のテスト:
    「明日の14時に30分のミーティングを追加して」
  4. Google Calendar にミーティングが追加されることを確認
Google Chat からの自然言語指示 → AI秘書が解釈 → gcalcli でカレンダー操作、という流れが確認できれば完了です。

よく使うコマンド一覧

以下は gcalcli でサービスアカウント認証を使う際のコマンド集です。

SA はサービスアカウント JSON のパス、USER は対象ユーザーのメールです。

# 変数定義(毎回入力しなくて済むように)
SA="/home/ubuntu/.openclaw/credentials/gchat-service-account.json"
USER="user@example.com"
操作コマンド
カレンダー一覧 gcalcli --client-secret $SA --impersonate-user $USER list
今日の予定 gcalcli --client-secret $SA --impersonate-user $USER agenda "today" "tomorrow"
今週の予定 gcalcli --client-secret $SA --impersonate-user $USER agenda "today" "7 days from now"
予定の追加 gcalcli --client-secret $SA --impersonate-user $USER add --title "件名" --when "2026-03-15 14:00" --duration 60 --noprompt
予定の検索 gcalcli --client-secret $SA --impersonate-user $USER search "キーワード"
予定の削除 gcalcli --client-secret $SA --impersonate-user $USER delete "件名"
カレンダー作成 gcalcli --client-secret $SA --impersonate-user $USER calw

トラブルシューティング

「Access denied」エラー

原因対処
ドメイン全体の委任が未設定 Step 4 を再確認。管理コンソールでクライアント ID とスコープが正しく登録されているか確認
スコープが不足 管理コンソールで OAuth スコープに calendarcalendar.events の両方が含まれているか確認
impersonate 対象ユーザーが間違っている --impersonate-user に指定するメールアドレスが Google Workspace ドメインのユーザーであることを確認

「Calendar API has not been used in project」エラー

「Service account delegation is not enabled」エラー

予定が追加されない / 表示されない

gcalcli が見つからない

# パスを確認
which gcalcli

# パスが通っていない場合
export PATH=$PATH:/home/ubuntu/.local/bin

# .bashrc に追記して永続化
echo 'export PATH=$PATH:/home/ubuntu/.local/bin' >> ~/.bashrc