LINE HarnessとGoogle Calendarを連携する予約管理|空き枠の出し方
CodexへGoogle Calendar・Driveを接続し、既存予定を除外した空き枠をLINE予約画面へ出す運用手順です。 Googleの予定と資料をCodexから読めるようにし、会話だけで空き時間確認と事前準備を行います。 Google Calendarのbusy時間とL Harnessの予約を重ね、空いている枠だけをLINEに表示します。
この記事はHarness Academyの教材データを基に、各Harnessの公式リポジトリにある実装箇所と照合して構成しています。秘密情報や本番データを記事・AIチャットへ貼らず、外部送信は必ず検証対象を限定してください。
この記事の目次
最初に確認すること
- CodexにGoogle Calendar・Driveをつなぐ: Codexへ依頼すると、自分のカレンダーとDriveを必要最小限の権限で確認できる
- Googleの予定を除外してLINEへ空き枠を出す: Googleの予定が入った時間を予約不可にし、LINE予約をGoogle Calendarへ自動反映できる
CodexにGoogle Calendar・Driveをつなぐ
Googleの予定と資料をCodexから読めるようにし、会話だけで空き時間確認と事前準備を行います。
この工程のゴール: Codexへ依頼すると、自分のカレンダーとDriveを必要最小限の権限で確認できる
最初に作るべきなのは個別機能ではなく、Codexが仕事の情報へ安全に届く入口です。Google Calendarをつなぐと予定・参加者・時間を確認でき、Google DriveをつなぐとDocs・Sheets・Slidesなどの資料を検索・読取できます。
CodexのプラグインはChatGPTデスクトップアプリまたはCodex CLIから利用します。IDE拡張だけではプラグインを追加できないため、接続画面が見つからない場合は利用しているCodexの画面を最初に確認します。
最初は読み取り権限だけにします。予定作成、ファイル編集、共有変更、削除は、用途と戻し方を確認してから個別に許可します。
Google Calendar・DriveをCodexへつないだだけでは、L Harnessの24時間予約受付は動きません。Codex用の接続と、L Harness Worker用のGoogle Calendar API接続は役割が別です。
手順
1. 利用画面を確認
ChatGPTデスクトップアプリまたはCodex CLIを開き、プラグイン/接続機能が使える状態か確認します。
2. Googleを接続
Google CalendarとGoogle Driveを自分のGoogleアカウントで認証し、最初は読み取り操作だけを許可します。
3. 一件ずつ読む
今週の予定を一件、Driveの検証用資料を一件だけ取得し、別アカウントの情報が混ざらないことを確認します。
4. 会話で組み合わせる
「来週の60分の空き候補と、面談資料をまとめて」のように、予定と資料を一つの依頼で確認します。
完了条件
- Google CalendarとDriveの接続アカウントを確認
- 予定とファイルを一件ずつ読み取れる
- 書込・共有・削除を許可していない
- Codex用接続とL Harness用接続を区別できる
注意: Codexへ接続したGoogleアカウントの権限範囲だけが見えます。最初から予定・ファイルの変更権限を包括許可しません。
Academy教材: Codex・Google・Harnessで実務運用する / Lesson 14-6
Googleの予定を除外してLINEへ空き枠を出す
Google Calendarのbusy時間とL Harnessの予約を重ね、空いている枠だけをLINEに表示します。
この工程のゴール: Googleの予定が入った時間を予約不可にし、LINE予約をGoogle Calendarへ自動反映できる
L Harnessにはこの仕組みのコードがあります。Workerの空き枠APIは、営業時間からGoogle Calendar FreeBusy APIのbusy時間とD1の既存予約を引き、残った時間だけをavailableとして返します。
予約確定時はD1へ予約を保存し、Google Calendarにも予定を作ります。キャンセル時はGoogle側の予定も削除します。顧客のLINE画面はこのWorker APIを使うため、予約受付中にCodexを開いておく必要はありません。
Codexは接続設定、希望営業時間の整理、既知の予定を使ったテスト、障害調査を担当します。Google Calendarの直接接続を持つCodexなら、L Harnessが返した空き枠と実カレンダーを会話で照合できます。
現行実装はGoogle APIが失敗するとD1予約だけで空き枠を返すフォールバックです。access token失効時にGoogle上の予定を見落とす可能性があるため、本番利用前にtoken更新と「Google確認失敗時は予約を止める」fail-closedを実装・検証する必要があります。
手順
1. 接続を点検
CodexでGoogle Calendar接続API、calendar ID、OAuth token更新、保存場所を値を出さずに確認します。
2. 空き枠条件を決める
営業時間、所要時間、前後バッファ、タイムゾーン、対象カレンダーを決めます。
3. busyを除外
既知のGoogle予定とD1予約を一件ずつ置き、その時間がLINEの予約候補から消えることを確認します。
4. 予約を往復確認
自分のLINEで予約しGoogle予定が作られること、キャンセルで両方が更新されることを確認します。
5. 障害時は閉じる
token失効・API失敗時に空き枠を公開せず、運営へ再接続通知が届く状態にします。
完了条件
- Google busy時間とD1予約を両方除外
- LINE予約がGoogle予定へ一対一で反映
- token失効とGoogle API失敗時は予約受付を停止
- キャンセルと同時予約を検証
注意: 現行コードのD1-onlyフォールバックのまま本番公開しません。Google予定を確認できないときは、空きと推測せず受付を止めます。
Academy教材: Codex・Google・Harnessで実務運用する / Lesson 14-7
公式ソース
- Codex plugins — CodexでプラグインとGoogle Driveを使う公式説明
- Plugin controls — 読取から始める権限設計
- Meeting prep with Google — CalendarとDriveを組み合わせる例
- LINE Harness / apps/worker/src/routes/calendar.ts — FreeBusyとD1予約を使う空き枠API
- LINE Harness / apps/worker/src/services/google-calendar.ts — Google Calendar API client
- LINE Harness / apps/worker/src/client/booking.ts — LINE側の空き枠表示と予約
- LINE Harness / packages/db/src/calendar.ts — 接続・予約のD1保存
- Google Calendar FreeBusy — busy時間取得の公式仕様
- Google Calendar API errors — access token更新とAPIエラー対応
関連ガイド
Academy会員はコピペ実行用プロンプトと演習を開くと、同じ手順をAIへ渡して実機で進められます。