# 第29回: Googleカレンダー連携 — 予定のリマインドを自動化する
この回で学ぶこと
Googleカレンダーとの連携方法
予定ベースのリマインド設定
Heartbeatでカレンダーを監視するときの注意点
前回のおさらい
前回、モーニングブリーフィングを設定した。毎朝7時に天気・ニュース・予定がTelegramに届くようになった。今回はGoogleカレンダーと連携し、予定の直前にリマインドを自動送信する仕組みを作る。
Googleカレンダー連携の設定
OpenClawからGoogleカレンダーの予定を読み取るには、「スキル」と呼ばれる拡張機能のインストールが必要になる。
「スキル」の先取り説明: スキルとは、秘書に追加できる能力のこと。スマホにアプリを入れるのと同じ感覚で、秘書に新しい機能を追加できる。スキルの詳しい仕組みはPart 7(第32回〜)で学ぶが、今回はGoogleカレンダー用のスキルだけ先にインストールする。
ステップ1: ClawHubからスキルをインストール
まず、スキルの管理ツール(ClawHub CLI)をインストールする。ClawHubはOpenClaw公式のスキルマーケットプレイスで、13,000以上のスキルが公開されている。
ターミナルで以下を順番に実行する:
Dockerバージョン
docker compose exec -u root openclaw-gateway npm i -g clawhub
docker compose exec openclaw-gateway clawhub install gog
npmバージョン
npm i -g clawhub
clawhub install gog
1行目でClawHub CLIをインストールし、2行目で gog スキルをインストールしている。
gog はGoogle Workspace(Gmail、カレンダー、ドライブなど)と連携するための人気スキル。今回はカレンダー機能だけを使う。
注意: npmが入っていない場合: Node.jsをインストールすればnpmも一緒に入る。Node.jsのインストール方法は第3回で解説済み。
ステップ2: Googleアカウントとの認証
次に、秘書がGoogleカレンダーにアクセスする許可を与える。手順は少し多いが、一度だけやればOK。
Google Cloud Console側の設定:
Google Cloud Console(https://console.cloud.google.com)にアクセスする
新しいプロジェクトを作成する(名前は何でもOK。例: 「OpenClaw」)
左メニューの「APIとサービス」→「ライブラリ」を開く
「Google Calendar API」を検索して、有効化する
「APIとサービス」→「認証情報」を開く
「認証情報を作成」→「OAuth 2.0 クライアントID」を選ぶ
アプリケーションの種類は必ず**「デスクトップアプリ」**を選ぶ(「ウェブアプリケーション」ではない)
作成後、認証情報ファイル(JSONファイル)をダウンロードする
OpenClaw側の設定:
ダウンロードしたJSONファイルを
~/.openclaw/credentials/フォルダに置くターミナルで認証を実行する:
Dockerバージョン
# 1. gog CLIをコンテナ内にインストール(初回のみ)
docker compose exec -u root openclaw-gateway sh -c 'curl -fsSL -L <https://github.com/steipete/gogcli/releases/download/v0.12.0/gogcli_0.12.0_linux_arm64.tar.gz> | tar xz -C /usr/local/bin gog'
# 2. 認証を実行
docker compose exec openclaw-gateway gog auth credentials /home/node/.openclaw/credentials/client_secret_xxxxx.json
docker compose exec openclaw-gateway gog auth add あなたのメールアドレス@gmail.com --services calendar
npmバージョン
gog auth credentials ~/.openclaw/credentials/client_secret_xxxxx.json
gog auth add あなたのメールアドレス@gmail.com --services calendar
ブラウザが自動で開くので、Googleアカウントにログインしてアクセスを許可する
これで認証完了。パスワードがOpenClawに渡されることはなく、Googleアカウント側からいつでもアクセス権を取り消せる。トークンはローカルに保存され、自動で更新される。
うまくいかない場合のチェックリスト:
認証情報ファイルのパスが間違っていないか
Calendar APIが有効化されているか(「有効なAPI」の一覧に表示されるか確認)
アプリケーションの種類を「ウェブアプリケーション」にしていないか(「デスクトップアプリ」が正解)
gog authではなくgog auth credentials+gog auth addの2ステップで実行しているか#トラブルシューティング:Docker環境でのGoogle認証エラー Docker環境で gog auth add を実行すると、Google認証後にブラウザが 127.0.0.1:34131 に接続できず、以下のエラーが表示されることがある: このサイトにアクセスできません 127.0.0.1 で接続が拒否されました。 ERR_CONNECTION_REFUSED 原因: OAuthのコールバック先がコンテナ内のポートを指しているため、Mac側のブラウザからアクセスできない。 解決方法: Mac側にgogを一時的にインストールし、トークンの保存先をコンテナのマウント先に向けて認証を行う。 # 1. Mac側にgogをインストール brew install steipete/tap/gogcli # 2. 保存先をコンテナと共有するディレクトリに指定して認証 GOG_CONFIG_DIR=/Users/あなたのユーザー名/my-secretary/config/gogcli gog auth credentials/Users/あなたのユーザー名/my-secretary/config/credentials/client_secret_xxxxx.json GOG_CONFIG_DIR=/Users/あなたのユーザー名/my-secretary/config/gogcli gog auth addあなたのメールアドレス@gmail.com --services calendar # 3. ブラウザが開くのでGoogleアカウントにログインして許可する 認証完了後は、コンテナ内のgogがトークンを参照できるため、以降はDocker経由で利用できる。
動作テスト
設定が正しく動作するか確認するための手順:
Googleカレンダーに30分後の予定を1件入れる
OpenClawのログを監視する(ターミナルで表示される)
次のHeartbeat実行時に、Telegramにリマインド通知が届くことを確認する
通知が届かない場合のチェック:
gog calendar listでカレンダーが読めるか確認する(認証の問題を切り分け)OpenClawのログでエラーメッセージが出ていないか確認する
HEARTBEAT.mdの書き方に問題がないか確認する(チェックリスト形式になっているか)
Telegram通知の設定が有効か確認する(第26回で設定した
openclaw.jsonのtarget)
ゴール状態
Googleカレンダーと連携できている(
gog calendar listで予定が表示される)テスト予定を入れて、Heartbeat経由でリマインド通知が届くことを確認済み
重複通知の仕組みと限界を理解している