キャリアド記事：面接日程のカレンダー自動登録　配布版1.0（スプレッドシート版）
2026-10-14 / この一式は自社環境に設定して使うテンプレートです。

■ 中身
AI_GUIDE.md            AIに渡すガイド（手順・設計・困ったとき）
InterviewCalendar.gs   GASのコード本体
InterviewCalendar.txt  上と同じ内容のテキスト版（.gs を開けない場合はこちら）
tests.cjs              通信なしの動作テスト（Node.jsで node tests.cjs。任意）

■ 仕組み
スプレッドシートに控えた面接日時を、GASが読み、Claude（Haiku）が日時を整え、Googleカレンダーに予定を作ります。
日時のセルが日付・時刻の形で入っている行は、Claudeを使わずにそのまま登録します。
日時がはっきりしないもの・過去の日時・時刻がないものは登録せず「確認待ち」にします。
同じ面接は二度登録しません（予定に面接IDのタグを付けて照合）。登録後に日時が変わった行は「変更あり」にするだけで、予定は自動で書き換えません。

■ スプレッドシートの準備（1行目の見出しを、この順番・この文字で）
面接ID｜求職者名｜企業名｜選考｜日時｜場所・URL｜登録状況｜予定ID｜登録時の日時
・面接IDは行ごとに重ならない値（例：I0001）。
・日時は「10/15 14時」のような書き方でも、日付・時刻のセルでも可。
・「登録状況」「予定ID」「登録時の日時」はGASが書き込みます。空けておいてください。
最初はテスト用のシートとテスト用のカレンダー、架空の面接で試してください。

■ GASへの貼り付け
1. script.google.com で新しいプロジェクトを作り、名前をテスト用と分かるものに変える。
2. InterviewCalendar.txt をテキストエディタで開き、中身を全部コピーする（ファイル名ではなく中身）。
3. 「コード.gs」の初期コードを全選択して貼り付け、保存する。

■ スクリプトプロパティ（プロジェクトの設定 → スクリプト プロパティ。入力後に保存）
ANTHROPIC_API_KEY  Claude ConsoleのAPIキー（チャットの有料プランとは別の従量課金）
SHEET_ID           スプレッドシートのURLの /d/ と /edit の間の文字列
SHEET_NAME         シート名（例：面接日程）
CALENDAR_ID        登録先カレンダーのID（カレンダーの設定 →「カレンダーの統合」）
CLAUDE_MODEL       省略可。省略時は claude-haiku-4-5-20251001
DEFAULT_MINUTES    省略可。終了時刻がないときの長さ（分）。省略時は60
ALL_DAY            省略可。true にすると、予定を「終日」の欄に入れ、時刻は予定名に書く（例：【面接】山田様｜〇〇株式会社｜一次｜14:00〜15:00）。
                   自分の予定と同じ時間帯に重なって見にくい場合に使う。省略時は時間帯の予定として入れる

■ 実行
checkSetup         シート・カレンダー・Claudeモデルへのアクセスを確認（書き込みなし）
registerInterviews 未登録の行を最大20件処理。トリガー（時間主導型・15分おきなど）に設定して使う

■ 困ったとき
〇〇 が未設定です            → スクリプトプロパティの名前と値、保存を確認
1行目の見出しが違います      → 見出しを上の順番・文字にそろえる
カレンダーが見つかりません    → CALENDAR_ID と、そのカレンダーへのアクセス権を確認
Claude HTTP 401/400/404      → キー・支払い設定（クレジット）・モデル名を確認
確認待ち：日時がはっきりしません → 日時を「10/15 14時」のように書き直すと次回登録される
変更あり                     → カレンダーの予定を手で直し、登録状況を「登録済み」に、登録時の日時を新しい日時に直す

■ 確認範囲
2026-10-14、配布ファイルと同じコードを実際のGAS（テスト用プロジェクト）に貼り付け、テスト用のシート・カレンダーと架空の面接4件で確認：
・checkSetup：シート・カレンダー・Claude（Haiku）へのアクセス PASS
・registerInterviews 1回目：登録3件（「10/20 14時」「10月21日 10:30〜11:00」、日付・時刻セル）、「来週あたり」は確認待ち
・カレンダーの予定の日時が正しいこと（14:00〜15:00、10:30〜11:00、15:00〜16:00）
・2回目：登録0件（二重登録なし）
・登録後に日時を変えた行は「変更あり」になり、予定は書き換えない
・確認待ちの行は、日時が変わるまでClaudeに再送しない
・ALL_DAY=true で、予定が終日の欄に「…｜一次｜13:00〜14:00」の形で入ること
tests.cjs（模擬通信）16項目も成功。
