reservation-status

予約状況自動更新システム - Claude Code 引き継ぎ資料

📌 プロジェクト概要

目的: 眼科クリニックの予約状況を自動判定し、ホームページのバナーに表示するシステム

主な機能:

  1. Chrome拡張機能で予約ページから空き状況を自動判定
  2. Googleスプレッドシートに記録
  3. GitHub Pagesのバナーに自動表示
  4. 曜日・時間帯に応じて適切な日付をチェック
  5. スプレッドシートの古いデータを自動削除

🗂️ システム構成

1. Chrome拡張機能(PC用)

2. ブックマークレット(スマホ・PC用)

3. Google Apps Script(GAS)

4. GitHub Pages(バナー表示)

5. Googleスプレッドシート


🔧 技術仕様

日付判定ロジック

チェックする日付の決定:

  1. 火曜18:30以降 → 木曜日の予約状況をチェック
  2. 水曜日(終日) → 木曜日の予約状況をチェック
  3. 月末18:30以降 → 自動判定不可(フォームから手動入力)
  4. その他18:30以降 → 明日の予約状況をチェック
  5. 18:30より前 → 本日の予約状況をチェック

受付終了時刻: 18:30 休診日: 毎週水曜日

予約ページのHTML構造

URL: https://ckreserve.com/clinic/fujiminohikari-ganka

カレンダーのセル:

<td class="select-cell-available">4</td>  <!-- ◯:予約可能 -->
<td class="day-closed">5</td>              <!-- グレー:休診日 -->
<td class="day-full">6</td>                <!-- ×:満員 -->

判定方法:

Google Apps Script

Web App URL:

https://script.google.com/macros/s/AKfycbzIRL1XS4zVAwcAs8OKMhVDR-eC_amv2GPMW5-Y8dYr_UsA92-CZIAwKJvSyxWsAEDz/exec

デプロイ設定:

トリガー:


📁 ファイル構成

GitHub リポジトリ(nekonekoganka/reservation-status)

reservation-status/
├── index.html          # バナー表示用HTML
└── README.md          # リポジトリの説明

Chrome拡張機能(chrome-extension-v6.zip)

chrome-extension/
├── manifest.json      # 拡張機能の設定
├── content.js         # メインロジック
├── google-apps-script.js  # GASのコード(参考用)
├── README.md          # 使い方
└── ICON_README.md     # アイコン設定方法

Google Apps Script

ファイル構成:

Apps Script プロジェクト
├── コード.gs          # 既存:データ記録用
└── 古い行削除.gs      # 新規:古い行削除用

🔑 重要な設定値

スプレッドシート

const SPREADSHEET_ID = '1RSd9aC5B_-gQ1_j5V1aQcZn1iVw9v8mpmhJ78_8gY80';
const SHEET_NAME = 'フォームの回答 1';

GAS Web App URL

const GOOGLE_APPS_SCRIPT_URL = 'https://script.google.com/macros/s/AKfycbzIRL1XS4zVAwcAs8OKMhVDR-eC_amv2GPMW5-Y8dYr_UsA92-CZIAwKJvSyxWsAEDz/exec';

予約ページURL

const RESERVATION_URL = 'https://ckreserve.com/clinic/fujiminohikari-ganka';

GitHub Pages URL

https://nekonekoganka.github.io/reservation-status/

行数上限

const MAX_ROWS = 20000;

🎨 UI/UX仕様

Chrome拡張機能のボタン

通常時:

処理中:

成功時(7秒間表示):

月末時(7秒間表示):

エラー時(7秒間表示):

バナー表示

予約可能時:

満員時:

◯◯の部分:

クリック動作:


📊 データフロー

1. 自動判定の流れ

1. Chrome拡張機能のボタンをクリック
   ↓
2. 現在の日時・曜日から対象日付を計算
   ↓
3. 予約ページのカレンダーから対象日付のセルを探す
   ↓
4. セルのクラス名で判定
   - select-cell-available → 「空きあり」
   - day-closed / day-full → 「「満」」
   ↓
5. タイムスタンプとステータスをGASに送信
   ↓
6. GASがスプレッドシートに記録
   ↓
7. バナーが1分以内に自動更新

2. バナー表示の流れ

1. GitHub Pagesが1分ごとに更新
   ↓
2. Google Sheets APIでスプレッドシートから全データ取得
   ↓
3. タイムスタンプが最新の行を特定
   ↓
4. 現在時刻・曜日から表示テキストを決定
   ↓
5. バナーを更新

3. 古い行削除の流れ

毎週水曜日 午前3時
   ↓
GASのトリガーが発動
   ↓
現在の行数をチェック
   ↓
20,000行以下 → 何もしない
20,000行超 → 古い行を削除(上から)
   ↓
ログに記録

🚀 デプロイ手順

Chrome拡張機能

  1. chrome://extensions/ を開く
  2. デベロッパーモードをON
  3. 「パッケージ化されていない拡張機能を読み込む」
  4. chrome-extension フォルダを選択

Google Apps Script

既存:データ記録用(すでに設定済み)

新規:古い行削除用

  1. スプレッドシートで「拡張機能」→「Apps Script」
  2. 新しいスクリプトファイル「古い行削除.gs」を作成
  3. コードを貼り付け
  4. トリガーを設定(毎週水曜 午前3時)

GitHub Pages

  1. GitHubリポジトリ:nekonekoganka/reservation-status
  2. index.html を編集
  3. Commit
  4. 1〜2分で自動デプロイ

⚠️ 既知の制約・注意点

1. 月末の制約

問題: 予約カレンダーは「今月分」のみ表示される

対応:

2. スプレッドシートの行数

現在の設定:

パフォーマンス:

3. バージョン管理

重要: 複数のPCで異なるバージョンの拡張機能を使うと、データが矛盾する

対応: 全PCを同じバージョン(v6)に統一する必要あり

4. 時刻の判定

18:30の扱い:

5. GASの実行制限

無料版の制限:

2分ごとに実行する場合:


🔮 今後の検討事項

自動化の方式

現在: 手動でボタンをクリック

検討中:

方式A:RPA(Power Automate Desktop など)

方式B:GAS + クラウドサーバー(Google Cloud Run など)

方式C:n8n(セルフホスト)+ Puppeteer

決定: まだ検討中


📝 メンテナンス

定期的な確認事項

毎日:

毎週:

毎月:

トラブルシューティング

バナーが更新されない:

  1. スプレッドシートに最新データがあるか確認
  2. スプレッドシートの共有設定を確認(リンクを知っている全員)
  3. GitHub Pagesのキャッシュをクリア

Chrome拡張機能が動かない:

  1. 拡張機能が有効になっているか確認
  2. 予約ページのURLが正しいか確認
  3. ブラウザのコンソールでエラーを確認

GASがエラーになる:

  1. スプレッドシートIDが正しいか確認
  2. シート名が「フォームの回答 1」か確認
  3. 実行ログでエラー内容を確認

🔗 関連リンク

予約ページ: https://ckreserve.com/clinic/fujiminohikari-ganka

バナー表示: https://nekonekoganka.github.io/reservation-status/

GitHubリポジトリ: https://github.com/nekonekoganka/reservation-status

スプレッドシート: https://docs.google.com/spreadsheets/d/1RSd9aC5B_-gQ1_j5V1aQcZn1iVw9v8mpmhJ78_8gY80/edit

Google Apps Script: スプレッドシートから「拡張機能」→「Apps Script」でアクセス


📞 引き継ぎ時の確認事項

Claude Codeに依頼する際のチェックリスト

□ GitHubリポジトリのアクセス権限

□ 修正したいファイルの場所

□ 具体的な修正内容

□ テスト方法


💾 バックアップ

重要ファイルのバックアップ

定期的にバックアップを取る:

  1. Chrome拡張機能
    • chrome-extension フォルダ全体をZIP
    • Googleドライブなどに保存
  2. Google Apps Script
    • Apps Scriptで「バージョン」→「スナップショットを作成」
  3. スプレッドシート
    • 「ファイル」→「コピーを作成」
    • 月1回程度
  4. GitHubリポジトリ
    • GitHubが自動的にバージョン管理
    • 必要に応じてローカルにクローン

🎓 参考情報

使用している技術

ドキュメント


✅ 最終確認

この引き継ぎ資料を使ってClaude Codeに以下を依頼できます:

  1. ✅ index.html の修正(バナー表示)
  2. ✅ content.js の修正(拡張機能のロジック)
  3. ✅ 新機能の追加
  4. ✅ バグ修正
  5. ✅ コードのリファクタリング

作成日: 2025年11月5日 最終更新: 2025年11月5日 バージョン: Chrome拡張機能v6、ブックマークレットv7、index.html v7