- GPT-6 Astra 軽で実装
Microsoft 365予定表と連携して空いている直近の日時を表示させ一般公開できる
Microsoft Bookingsでは同じようなことができるのですが、1日ずつクリックしないと予定表の空き状況が見えません。例えばこの先1ヶ月の空き状況を一覧表示する機能がありません。面談候補日時をできるだけ一覧表示することは特に個人事業主やフリーランス、副業プロ人材として活動していると必要ではないでしょうか。私自身が仕事をしていく上で必要なので作成した事例です。
参考までに他の記事として次の記事も書いています
ChatGPT Sitesの使い方 Web/DB/認証基盤込みのDR/BCPコミュニケーションサイトを5分で作成しました (2026年9月仕様)
https://qiita.com/mnoda/items/0fc611ce384ccc2f4865
ChatGPT Sitesで基幹システムを自然言語プロンプト指示で構築する
https://qiita.com/mnoda/items/f71d4e53739561fb769c
仕様
午前9時から午後9時までの間で今日から31日先まで面談可能日時を一覧表示するWEBサイトをChatGPT Sitesで作成しました。Outlook予定表と自動連携しており、空き以外(予定ありなど)の予定が入っている時間帯を除いて提案します。管理者機能として予定が埋まっている前後〜分は面談を受け付けない設定をできるようにしました。反省点ですが何曜日は何時から何時まで打ち合わせは可能という情報は外だしして管理者機能で動的にさせる余地はありました。下述のプロンプトはそれが考慮されていません。
(※2026/9/16更新:3回目のプロンプト実行で機能改修されました)
実際のサイト:
https://schedule.mnoda1979.chatgpt.site/
このサイトで一覧を見てBookingsで予約をしてもらうという流れが良いかもしれません。

参考までに管理者画面のイメージを添付しておきます。大きくは
(1)Microsoft Entra ID Enterprise Applicationとの連携方法登録(M365側でアプリの登録とシークレットキーの発行を行います)
(2)予定表を見にいくアカウント登録(M365 OAUTH認証)
(3)予定あり前後を何分打ち合わせ不可にするかのパラメーター設定(たとえば前も後も15分NG)
上述しましたが、曜日ごとの面談可能時間帯は外出ししたほうが汎用性は高まります。


管理者画面ではM365の登録方法が書かれており、M365側にはcallback urlを登録。M365側で生成された
ディレクトリID、
アプリケーションID、
シークレット値(作成時1回しか表示されない)を
Sites側に登録します。その後、M365の予定表を連携するIDでログインすれば完了です。
注意事項:
管理者画面には他のChatGPTユーザーなどがログインしてもアクセスできない確認を推奨します

ChatGPT Sites 開発事例集
2026/9/17更新:こちらの記事内容も対象とする開発事例集をまとめました。
https://first-success-development-portfolio.mnoda1979.chatgpt.site/
プロンプト1回目(私のケースではM365 OAUTH認証が上手くできませんでした)
@Sites
Microsoft Outlook予定表と連携し、私の「空き時間だけ」を一般公開するWebサイトを新規作成してください。
既存の作成途中Siteは使用しません。
新規Siteとして最初から構築してください。
このSiteは一般公開サイトとし、誰でもログインなしで空き時間を閲覧できるようにしてください。
ただし、Site内の目立たない場所に「管理者 / Admin」メニューを設け、Site所有者である私だけが管理機能へアクセスできるようにしてください。
今回の最優先事項は、
・一般公開画面
・管理者認証
・Microsoft Outlook予定表認証
・Free/Busy取得
・前後クリアランス設定
・空き時間計算
・日本語英語併記
・セキュリティ
を実際に利用可能な完成状態まで実装することです。
不要な機能追加や過剰なデザイン調整は避け、実動作を優先してください。
⸻
1. 公開Siteの構成
Siteは以下の2領域に分けてください。
A. 一般公開画面
誰でもログインなしで閲覧可能にしてください。
一般閲覧者にはMicrosoftログイン、ChatGPTログイン、その他認証を要求しないでください。
表示する情報は原則として、
・日付
・曜日
・空き開始時刻
・空き終了時刻
・表示対象期間
・最終更新日時
だけとしてください。
Outlook予定表の詳細情報は公開しないでください。
B. 管理者メニュー
一般公開画面のページ最下部など、目立たない場所に、
管理者
Admin
または
⚙ Admin
程度の小さなリンクを設置してください。
管理者画面は一般公開画面とは分離してください。
管理画面のURLを直接入力した場合でも、認証・認可を通過していなければアクセスできないようにしてください。
⸻
2. 希望公開URL
可能であれば、
schedule.mnoda1979.chatgpt.site
を使用してください。
ChatGPT SitesのURL仕様上このURLが利用できない場合は、利用可能な公開URLを使用してください。
URL取得のために既存の別Siteを変更・削除しないでください。
⸻
3. 管理者認証
管理者メニューは、このSiteを作成・所有している私のChatGPTアカウント本人だけが利用できるようにしてください。
Sign in with ChatGPT が利用可能な環境であれば、それを管理者認証に使用してください。
ただし、
「ChatGPTへログインできた」
というだけでは管理者権限を与えないでください。
ログイン後にサーバー側で、
現在ログインしているChatGPTアカウント
=
このSiteの所有者であるChatGPTアカウント
であることを確認してください。
Site所有者本人だけ管理者画面へアクセス可能としてください。
他のChatGPTユーザーが正常にSign in with ChatGPTできた場合でも、管理者画面へのアクセスは拒否してください。
認証フロー:
一般公開Site
↓
管理者 / Adminを選択
↓
Sign in with ChatGPT
↓
ChatGPTアカウント認証
↓
Site所有者本人かサーバー側で確認
↓
所有者本人
→ 管理画面を表示
所有者以外
→ アクセス拒否
アクセス拒否時は、
この管理画面へのアクセス権限がありません。
You do not have permission to access this admin page.
と表示してください。
もし現在のChatGPT Sites環境でSite所有者情報をSite内アプリから直接取得できない場合は、管理者として許可するChatGPTアカウントを安全なサーバー側設定に固定してください。
管理者識別情報をフロントエンドJavaScriptへハードコードしないでください。
⸻
4. 管理APIの保護
管理者リンクを画面上で隠すだけでは不十分です。
以下の管理操作はすべてサーバー側で認証・認可してください。
・Microsoft予定表認証
・Microsoft再認証
・Microsoft接続解除
・予定前クリアランス変更
・予定後クリアランス変更
・設定保存
未認証ユーザーやSite所有者以外のユーザーがAPIエンドポイントを直接呼び出しても、操作できないようにしてください。
⸻
5. 管理者メニューの機能
今回、管理者メニューには以下の2機能を実装してください。
① Microsoft予定表の認証情報登録・接続管理
② 予定前後のクリアランス設定
それ以外の複雑な管理機能は不要です。
⸻
6. Microsoft予定表の認証
管理画面に、
Microsoft予定表を接続
Connect Microsoft Calendar
を設置してください。
私はMicrosoft 365法人アカウントを使用しています。
私はそのMicrosoft 365環境の管理者です。
取得対象は私自身のOutlook予定表です。
現在のChatGPT Sites環境で利用可能な中から、最も簡単で安全なMicrosoft認証方式を使用してください。
Microsoft OAuth / Microsoft Entra ID / Microsoft Graph等、実装可能な方法を使用してください。
可能であれば、
Microsoftログイン
↓
OAuth同意
↓
予定表へのアクセス許可
↓
接続完了
という方式を優先してください。
Client Secret等を管理者が毎回手入力する方式より、OAuth方式を優先してください。
ただし環境上必要な場合は、安全な管理画面から必要情報を登録できるようにしてください。
⸻
7. Microsoft接続状態
Microsoft認証が正常に完了したら、管理画面に、
接続済み
Connected
と表示してください。
可能であれば管理画面内だけで、
接続中のアカウント
Connected account
を確認できるようにしてください。
一般公開画面にはMicrosoftアカウント名、メールアドレス等を絶対に表示しないでください。
また管理画面には、
再認証
Reconnect
接続解除
Disconnect
を用意してください。
接続解除時は確認ダイアログを表示してください。
⸻
8. Microsoft認証情報の保存
Microsoft認証に必要な、
・Access Token
・Refresh Token
・Client Secret
・その他Secret
は、サーバー側の安全なSecretsまたは永続ストレージに保存してください。
フロントエンドJavaScript、HTML、localStorage等へ保存しないでください。
一般閲覧者のブラウザへ認証情報を送信しないでください。
⸻
9. 前後クリアランス設定
管理画面に以下の設定を用意してください。
予定前クリアランス
Buffer Before
予定後クリアランス
Buffer After
単位:
分
minutes
初期値は、
予定前:15分
Buffer Before: 15 minutes
予定後:15分
Buffer After: 15 minutes
としてください。
前後は別々に変更できるようにしてください。
例:
予定前:30分
予定後:10分
も設定可能としてください。
⸻
10. クリアランス入力仕様
設定可能範囲は、
0~180分
としてください。
整数のみ入力可能にしてください。
無効な入力値の場合は保存せず、分かりやすいエラーを表示してください。
保存ボタン:
保存
Save
保存成功時:
設定を保存しました。
Settings saved.
と表示してください。
⸻
11. クリアランス設定の永続化
予定前クリアランスと予定後クリアランスは、サーバー側の永続ストレージへ保存してください。
ブラウザのlocalStorageだけに保存する方式は禁止します。
別端末から管理者ログインしても同じ設定値を利用できるようにしてください。
Siteを再起動・再公開しても設定値を保持してください。
初回のみデフォルト値15分を使用してください。
⸻
12. Outlook予定表の判定基準
Outlook予定表上のFree/Busyステータスを基準としてください。
予約不可として扱うステータス:
・Busy / 予定あり
・Tentative / 仮の予定
・OOF / Out of Office / 外出中
空き時間を塞がないステータス:
・Free / 空き時間
・Working Elsewhere
予定件名ではなく、原則としてFree/Busyステータスを基準に判定してください。
⸻
13. Free予定の扱い
Outlook上でFreeとなっている予定は空き時間を塞がないでください。
以下もFreeであれば無視してください。
・祝日
・リマインダー
・メモ
・終日予定
・個人的な備忘予定
「終日予定である」というだけでは予約不可にしないでください。
⸻
14. Busy等の終日予定
Busy、Tentative、OOFとなっている終日予定については、その日の公開対象時間、
09:00~21:00
をすべて予約不可としてください。
⸻
15. クリアランスの適用
Busy、Tentative、OOFの各予定について、管理者設定の前後クリアランスを適用してください。
例:
予定
13:00~14:00
管理者設定
予定前:15分
予定後:15分
なら、
12:45~14:15
を予約不可としてください。
管理者設定が、
予定前:30分
予定後:10分
なら、
12:30~14:10
を予約不可としてください。
設定変更後は、次回の空き時間計算から新しい値を反映してください。
⸻
16. 表示対象期間
一般公開画面では、サイトへアクセスした当日から31日後までを表示してください。
つまり、
アクセス当日+31日後まで
の合計32日分です。
例:
2026年9月15日にアクセスした場合
2026年9月15日
~
2026年10月16日
を表示してください。
日付を固定値にしないでください。
タイムゾーンは、
Asia/Tokyo
としてください。
⸻
17. 1日の対象時間
毎日、
09:00~21:00
を空き時間判定の対象としてください。
09:00より前、21:00より後は一般公開画面へ表示しないでください。
⸻
18. 空き時間計算
各日について、
09:00~21:00
から、
Busy
Tentative
OOF
の予定、および、
予定前クリアランス
予定後クリアランス
を除外してください。
残った連続時間帯を空き時間として表示してください。
⸻
19. 重複予定
クリアランスを適用した結果、複数の予約不可時間帯が重複または連続する場合は、1つの予約不可時間帯として統合してください。
⸻
20. 09:00・21:00をまたぐ予定
09:00以前または21:00以降の予定についても、クリアランスを含めた時間帯が09:00~21:00に重なる場合は、その重複部分を予約不可としてください。
例:
予定
08:30~09:10
前後15分設定なら、
08:15~09:25
そのため公開対象では、
09:00~09:25
を予約不可としてください。
⸻
21. 日をまたぐ予定
複数日にまたがるBusy、Tentative、OOF予定も正しく処理してください。
例えば、
9月18日12:00
~
9月22日21:00
の予定であれば、その期間中の各日の09:00~21:00と重なる部分を予約不可としてください。
クリアランスも正しく適用してください。
⸻
22. 最低空き時間
30分以上連続して空いている時間帯だけを表示してください。
30分未満は表示しないでください。
30分ちょうどは表示してください。
例:
12:15~12:45
→ 表示
12:15~12:40
→ 非表示
⸻
23. アクセス当日の扱い
アクセス当日は、既に過ぎた時間帯を表示しないでください。
また、直前予約防止として、
現在時刻+15分
を当日の最短表示開始時刻としてください。
この当日直前予約防止15分は、予定前クリアランスとは別の固定値としてください。
例:
現在時刻
14:10
の場合、
14:25
より前は空き時間として表示しないでください。
⸻
24. ローディング表示
ページ表示直後は空き時間一覧を表示しないでください。
Outlook予定表の取得および空き時間計算が完了するまで、画面中央付近に、
空き時間を確認していますのでしばらくお待ちください・・・
Please wait while we check available times…
と表示してください。
シンプルなローディングスピナーも表示してください。
⸻
25. ローディング中の処理順序
必ず、
ページ表示
↓
ローディング表示
↓
Outlook最新情報取得
↓
Free/Busy判定
↓
管理者設定のクリアランス適用
↓
空き時間計算
↓
処理完了
↓
ローディング表示を消す
↓
最新の空き時間一覧を一度に表示
としてください。
取得途中のデータや古い空き時間を一瞬でも表示しないでください。
⸻
26. ページ再読み込み
ページを再読み込みした場合も、
ローディング
↓
最新Outlook情報取得
↓
最新空き時間計算
↓
表示
としてください。
前回の空き時間を先に表示してから更新する方式にはしないでください。
⸻
27. Outlook取得失敗時
Outlook予定表を取得できなかった場合は、ローディング表示を終了し、
現在、空き状況を取得できません。
時間をおいて再度ご確認ください。
We are currently unable to retrieve availability.
Please try again later.
と表示してください。
取得失敗時に、
「予定が取得できなかったので全部空いている」
と判定することは禁止します。
必ずフェイルクローズにしてください。
⸻
28. Microsoft未接続時
管理者がまだMicrosoft予定表を接続していない場合も、一般公開画面で空き時間を表示しないでください。
以下のような一般的なメッセージを表示してください。
現在、空き状況を取得できません。
Please try again later.
一般閲覧者に、
Microsoft未認証
Client Secret不足
等の内部事情を表示しないでください。
⸻
29. 一般公開画面の表示言語
一般公開画面は、すべて日本語と英語を併記してください。
原則、
日本語
English
の順としてください。
日本語を主表示、英語を少し小さめの補助表示として構いません。
⸻
30. タイトル
以下を表示してください。
打ち合わせ可能日時
Available Meeting Times
⸻
31. 説明文
以下を表示してください。
Outlook予定表の空き状況をもとに自動更新しています
Availability is automatically updated based on my Outlook calendar.
⸻
32. プライバシー表示
以下を小さめに表示してください。
予定の内容・件名・参加者等は公開していません
Event details, subjects, attendees, and other private information are not displayed.
⸻
33. 表示期間
以下の形式で表示してください。
表示期間
Display Period
2026年9月15日~2026年10月16日
September 15, 2026 – October 16, 2026
⸻
34. 日付表示
各日の表示は、例えば、
9/23(水)
Sep 23 (Wed)
または、
9/23(水) / Sep 23 (Wed)
としてください。
曜日は必ず表示してください。
⸻
35. 時刻表記
時刻は24時間表記に統一してください。
例:
09:00~14:45
16:45~21:00
AM / PM表記は使用しないでください。
⸻
36. 空きなし
その日に表示可能な空き時間がない場合は、
空きなし
No availability
と表示してください。
⸻
37. 最終更新日時
Outlook予定表を正常取得できた場合は、
最終更新 / Last Updated:
2026/09/15 21:30
のように日本時間で表示してください。
⸻
38. デザイン
シンプルで清潔感があり、非常に見やすいデザインにしてください。
PC・スマートフォン双方で使いやすいレスポンシブデザインにしてください。
日付ごとにカード形式または一覧形式で表示してください。
管理者リンクは一般画面の最下部等、目立たない位置に配置してください。
⸻
39. サーバー側で処理すること
最重要要件です。
Outlook予定の詳細をブラウザへ取得してからJavaScriptで非表示・変換する方式は禁止します。
必ず、
Microsoft Outlook / Microsoft Graph
↓
サーバー側
↓
Free/Busy判定
↓
クリアランス適用
↓
空き時間算出
↓
空き時間のみ一般公開フロントエンドへ返却
としてください。
⸻
40. 一般公開側へ返す情報
一般公開ブラウザへ返すデータは原則として、
・日付
・曜日
・空き開始時刻
・空き終了時刻
・表示期間
・最終更新日時
だけとしてください。
⸻
41. 一般公開してはいけない情報
以下は一般公開側へ絶対に送信・表示しないでください。
・Outlook予定件名
・予定本文
・予定場所
・参加者
・参加者メールアドレス
・主催者
・Teams URL
・Zoom URL
・その他会議URL
・Outlook Event ID
・Microsoft Access Token
・Refresh Token
・Client Secret
・Tenant Secret
・API Key
・ChatGPT管理者識別情報
・内部ログ
・スタックトレース
ブラウザのNetworkタブ、HTML、JavaScript、JSON等を確認しても取得できない構成にしてください。
⸻
42. エラー情報
Microsoft Graph、ChatGPT認証、サーバー等でエラーが発生しても、一般公開画面には内部エラー内容を表示しないでください。
一般閲覧者には一般的なエラーメッセージだけを表示してください。
詳細エラーは必要であれば管理者画面内だけで確認できるようにしてください。
ただし、SecretやToken自体は管理画面にも平文表示しないでください。
⸻
43. Siteの公開範囲
一般公開画面は、
Anyone on the internet
相当の設定とし、誰でもログインなしで閲覧可能にしてください。
管理者画面のみChatGPT管理者認証を要求してください。
一般閲覧者にSign in with ChatGPTを要求しないでください。
⸻
44. 今回実装しないもの
今回のPhaseでは以下は実装しないでください。
・予約登録
・Outlookへの予定作成
・氏名入力
・メールアドレス入力
・予約申込
・予約キャンセル
・予約変更
・Microsoft Bookings
・Calendly相当機能
・複数管理者
・複数予定表切り替え
・複雑なアクセス権管理
今回の目的は、
一般公開空き時間表示
+
管理者認証
+
Microsoft予定表接続
+
前後クリアランス設定
までです。
⸻
45. 実装優先順位
以下の順に完成させてください。
1. 一般公開画面
2. 管理者リンク
3. Sign in with ChatGPTによる管理者認証
4. Site所有者本人のみへの認可
5. 管理者メニュー
6. Microsoft認証
7. Outlook実データ取得
8. Free/Busy判定
9. 前後クリアランス設定
10. 設定永続化
11. 空き時間算出
12. 日本語英語併記表示
13. ローディング
14. エラー処理
15. スマートフォン対応
16. セキュリティ確認
装飾より実動作を優先してください。
⸻
46. 人間の操作が必要な場合
Microsoftログイン、OAuth同意、Microsoft 365管理者同意、Sign in with ChatGPT等、私自身による認証操作が必要な場合は、その画面まで実装・進行したうえで、私が行う操作を具体的に示してください。
それ以外では途中で質問して停止せず、可能な範囲を完成まで進めてください。
⸻
47. 実データによる確認
ダミーデータだけで完成扱いにしないでください。
Microsoft認証後は、実際の私のOutlook予定表からFree/Busy情報を取得し、空き時間が正常に表示されることを確認してください。
⸻
48. 完成前テスト
完成前に最低限以下を確認してください。
・一般ユーザーはログインなしで閲覧できる
・一般ユーザーは管理者画面へ入れない
・管理画面URL直接アクセスでも未認証なら拒否される
・他のChatGPTユーザーがログインしても管理者権限を得られない
・Site所有者本人のみ管理者画面へ入れる
・Microsoft予定表を管理画面から接続できる
・Microsoft接続状態を管理画面で確認できる
・再認証できる
・接続解除できる
・Outlook実データを取得できる
・Busyが予約不可になる
・Tentativeが予約不可になる
・OOFが予約不可になる
・Freeは空き時間を塞がない
・Working Elsewhereは空き時間を塞がない
・Busy等の終日予定はその日を予約不可にする
・Freeの終日予定は無視される
・予定前クリアランスの初期値が15分
・予定後クリアランスの初期値が15分
・前後を別々に変更できる
・0~180分の範囲で保存できる
・設定が永続保存される
・設定変更後に空き時間計算へ反映される
・09:00~21:00のみ対象になる
・アクセス当日から31日後まで合計32日分表示される
・当日の過去時間を表示しない
・現在時刻+15分より前を表示しない
・30分未満の空きは表示されない
・30分ちょうどは表示される
・日をまたぐ予定が正常に処理される
・ローディング表示が動作する
・取得完了後にだけ空き時間を表示する
・取得失敗時に空き時間を誤表示しない
・日本語英語が併記される
・時刻が24時間表記になる
・予定詳細が一般ブラウザへ漏れない
・認証情報が一般ブラウザへ漏れない
・スマートフォンで正常表示される
⸻
49. 完成条件
以下が実際に動作した時点で完成としてください。
一般ユーザーが公開URLへアクセス
↓
ローディング表示
↓
最新Outlook予定表を安全に取得
↓
Free/Busy判定
↓
管理者設定の前後クリアランス適用
↓
空き時間計算
↓
日本語・英語併記で09:00~21:00の空き時間だけ表示
かつ、
Site所有者である私が
管理者 / Admin
↓
Sign in with ChatGPT
↓
所有者本人として認証
↓
管理画面
↓
Microsoft予定表の接続管理
↓
予定前・予定後クリアランス設定
を利用できる状態にしてください。
実データ接続が成立していない状態、ダミーデータだけの状態、認証が機能していない状態を完成扱いにしないでください。
プロンプト2回目(M365認証のバグフィックスをしてもらうためのもので、これで解決しています)
現在作成済みの以下のChatGPT Siteを対象に、Microsoft OAuth認証の不具合だけを調査・修正してください。
schedule.mnoda1979.chatgpt.site
現在の予定表処理、一般公開UI、管理画面UI、Free/Busy処理、クリアランス計算等は原則変更しないでください。
現在の症状は以下です。
・管理画面からMicrosoft予定表の認証情報を登録できる
・「Microsoft予定表を接続」を実行するとMicrosoftログイン画面へ遷移しない
・代わりにSite上で {"error":true} と表示される
・Microsoft Entra IDのEnterprise applicationsのSign-in logsには認証試行が記録されない
・Entra IDにはWebアプリとしてRedirect URIを登録済み
Redirect URI:
https://schedule.mnoda1979.chatgpt.site/api/microsoft/callback
まず最小構成でOAuth開始処理を切り分けてください
管理画面に一時的な「Microsoft接続テスト」機能を追加してください。
このテストではMicrosoft Graphへの予定表取得、Free/Busy取得、トークン取得後の処理などは一切実行せず、設定済みの
・Tenant ID
・Application (Client) ID
・Client Secret
・Redirect URI
を使用して、Microsoft OAuth 2.0 /authorize endpointへリダイレクトするところだけをテストしてください。
Client Secretそのものは画面・ログ・レスポンスへ絶対に表示しないでください。
正常条件
「Microsoft接続テスト」を実行
↓
Siteのサーバー側OAuth開始処理
↓
HTTP Redirect
↓
login.microsoftonline.com
↓
Microsoftログイン画面
まで到達すればOAuth開始処理は正常と判断してください。
到達しない場合
最小構成でもMicrosoftログイン画面へ遷移せず {"error":true} 等になる場合は、Siteの生成コードとサーバー側実行ログを調査してください。
特に以下を確認してください。
・OAuth開始APIが実際に呼ばれているか
・Tenant IDがサーバー側で読み込めているか
・Client IDがサーバー側で読み込めているか
・Client Secretがサーバー側で読み込めているか
・Secret保存時のキー名とコード側の参照名が一致しているか
・Secret IDではなくSecret Valueを使用する実装になっているか
・Microsoft authorize URLを正常に生成できているか
・HTTP 302/303 Redirectを返せているか
・Redirect前に例外が発生していないか
・Sitesランタイム上でこのOAuth実装方式が利用可能か
実際のエラー原因をサーバーログまたは生成コードから特定してください。
{"error":true} という結果だけを根拠に推測しないでください。
また、診断目的で以下についてYes/Noを確認してください。
Tenant ID loaded: Yes/No
Client ID loaded: Yes/No
Client Secret loaded: Yes/No
Redirect URI loaded: Yes/No
Authorize URL generated: Yes/No
Redirect response generated: Yes/No
Secret、Access Token、Refresh Tokenそのものは表示しないでください。
Entra ID側の設定変更を推測で要求しないでください。
Microsoft側から明確なAADSTS等のエラーが返された場合のみ、そのエラーコードに基づいてEntra ID設定を確認してください。
原因を特定できた場合は、既存Siteへの最小限の差分修正で解決してください。全面的なコード書き換えやSiteの再作成は行わないでください。
修正後、「Microsoft接続テスト」から実際に login.microsoftonline.com のMicrosoft認証画面へ遷移するところまで確認してください。
Microsoftログインや同意など私自身による操作が必要になった時点で停止し、私が行う操作を具体的に示してください。
プロンプト3回目(2026/9/16更新:曜日ごとの稼働時間帯が実装できました)
@Sites
既存の以下のChatGPT Siteに「曜日別の会議可能時間設定」を追加してください。
対象Site:
schedule.mnoda1979.chatgpt.site
これは新規Site作成ではありません。
前回、この機能の改修中にCodex / Workの5時間利用枠を使い切り、作業が途中停止しました。
本番リリースはされていません。
今回の最優先事項は、
「現在正常動作している本番Siteを壊さず、曜日別会議可能時間設定だけを最小差分で完成させ、本番反映すること」
です。
━━━━━━━━━━━━━━━━━━━━
1. 最初に前回作業の残存状態を確認
━━━━━━━━━━━━━━━━━━━━
前回の途中作業が保持されているとは仮定しないでください。
最初に、現在利用可能なSiteの状態、保存済みバージョン、前回作業成果を必要最小限の範囲で確認してください。
曜日別会議可能時間設定について前回の変更が残っている場合は、それを可能な限り再利用し、未完成部分だけを完成させてください。
前回の変更が残っていない場合は、現在正常動作している本番版を基準として、今回の機能だけを最小差分で実装してください。
途中成果が残っているか不明なまま、
・同じUI
・同じAPI
・同じ設定項目
・同じデータ構造
を二重に実装しないでください。
━━━━━━━━━━━━━━━━━━━━
2. Codex / Work利用量を抑える
━━━━━━━━━━━━━━━━━━━━
Codex / Workの利用枠を不必要に消費しないでください。
今回必要な変更箇所だけを調査・実装してください。
以下は行わないでください。
・Site全体の全面再調査
・新規Site作成
・コード全面書き換え
・大規模リファクタリング
・UI全面変更
・コードスタイル統一
・今回と無関係な改善
・追加機能の実装
・既存機能の網羅的再テスト
━━━━━━━━━━━━━━━━━━━━
3. 正常動作している既存機能は変更しない
━━━━━━━━━━━━━━━━━━━━
以下は現在正常動作しているため、原則変更しないでください。
・Microsoft OAuth認証
・Microsoft Entra ID関連処理
・Microsoft Graph接続
・Microsoft Token処理
・Outlook予定表取得
・Free/Busy取得
・Busy / Tentative / OOF判定
・Free / Working Elsewhere判定
・管理者認証
・予定前クリアランス
・予定後クリアランス
・一般公開画面
・表示対象期間
・最低30分ルール
・当日の処理
・日英表示
・ローディング処理
・エラー処理
特にMicrosoft OAuthは既に正常動作しています。
OAuthコード、認証フロー、Entra ID設定、Microsoft Graph接続を再設計・再実装しないでください。
今回の機能追加に直接必要な接続部分だけ変更してください。
━━━━━━━━━━━━━━━━━━━━
4. 追加する機能
━━━━━━━━━━━━━━━━━━━━
既存管理画面に、
会議可能時間
Meeting Availability Hours
を追加してください。
月曜日~日曜日の各曜日について、それぞれ独立して以下を設定可能にしてください。
・会議可能 ON / OFF
・開始時刻
・終了時刻
━━━━━━━━━━━━━━━━━━━━
5. 時刻設定
━━━━━━━━━━━━━━━━━━━━
開始時刻・終了時刻は30分刻みで選択できるようにしてください。
つまり、
00:00
00:30
01:00
01:30
……
23:00
23:30
24:00
のように :00 / :30 単位としてください。
24時間表記とし、AM / PMは使用しないでください。
ONの曜日については、
開始時刻 < 終了時刻
であることを検証してください。
不正な設定は保存しないでください。
━━━━━━━━━━━━━━━━━━━━
6. 初期値と既存データ
━━━━━━━━━━━━━━━━━━━━
曜日別設定が存在しない場合のみ、既存仕様との互換性のため、
月:ON 09:00~21:00
火:ON 09:00~21:00
水:ON 09:00~21:00
木:ON 09:00~21:00
金:ON 09:00~21:00
土:ON 09:00~21:00
日:ON 09:00~21:00
を初期値としてください。
ただし、前回の途中作業によって曜日別設定がすでに存在する場合は、その値を初期値で上書きしないでください。
━━━━━━━━━━━━━━━━━━━━
7. 永続保存
━━━━━━━━━━━━━━━━━━━━
曜日別設定は、既存Siteで使用しているサーバー側の永続ストレージへ保存してください。
localStorageだけに保存する方式にはしないでください。
・ページ再読み込み
・Site再公開
・別端末からの管理者アクセス
でも設定が維持されるようにしてください。
前回の途中作業ですでに適切な保存処理が存在する場合は、新しい保存方式を重複して追加せず、それを利用してください。
━━━━━━━━━━━━━━━━━━━━
8. 空き時間計算への反映
━━━━━━━━━━━━━━━━━━━━
現在固定されている、
09:00~21:00
という1日の会議可能時間を、
「その日付の曜日に設定された会議可能時間」
へ置き換えてください。
例えば、
火曜日:
ON
09:30~18:30
なら、その火曜日は09:30~18:30だけを空き時間計算の対象としてください。
Outlook上で09:30以前または18:30以降がFreeでも公開しないでください。
━━━━━━━━━━━━━━━━━━━━
9. 曜日OFF
━━━━━━━━━━━━━━━━━━━━
曜日がOFFの場合、その曜日はOutlook予定表が完全にFreeでも空き時間を公開しないでください。
一般公開画面には既存仕様に従って、
空きなし
No availability
と表示してください。
━━━━━━━━━━━━━━━━━━━━
10. 既存Free/Busyロジックをそのまま使用
━━━━━━━━━━━━━━━━━━━━
処理は、
曜日別会議可能時間
↓
既存Outlook Free/Busy
↓
Busy / Tentative / OOF除外
↓
既存の予定前クリアランス
↓
既存の予定後クリアランス
↓
既存の予約不可時間統合
↓
既存の空き時間計算
↓
30分以上の空き時間のみ表示
としてください。
既存のFree/Busyロジック自体を作り直さないでください。
従来通り、
予約不可:
Busy
Tentative
OOF / Out of Office
空き時間を塞がない:
Free
Working Elsewhere
としてください。
━━━━━━━━━━━━━━━━━━━━
11. クリアランス機能を維持
━━━━━━━━━━━━━━━━━━━━
既存の、
予定前クリアランス
Buffer Before
予定後クリアランス
Buffer After
をそのまま維持してください。
例えば、
曜日設定:
09:30~18:30
Outlook予定:
13:00~14:00
前クリアランス:
15分
後クリアランス:
15分
なら、
12:45~14:15
を予約不可としてください。
━━━━━━━━━━━━━━━━━━━━
12. 計算結果を30分単位へ丸めない
━━━━━━━━━━━━━━━━━━━━
30分刻みなのは管理者が設定する開始・終了時刻だけです。
実際に算出された空き時間を30分単位へ丸めないでください。
上記の例なら、
09:30~12:45
14:15~18:30
と表示してください。
12:45や14:15を13:00や14:30等へ丸めないでください。
━━━━━━━━━━━━━━━━━━━━
13. その他の既存ルールを維持
━━━━━━━━━━━━━━━━━━━━
以下も変更しないでください。
・30分未満の空き時間は表示しない
・30分ちょうどは表示する
・当日は過去時刻を表示しない
・当日は現在時刻+15分より前を表示しない
・既存の表示対象期間
・既存の日英併記
・既存の公開画面デザイン
━━━━━━━━━━━━━━━━━━━━
14. 管理画面
━━━━━━━━━━━━━━━━━━━━
既存管理画面を大きく変更しないでください。
既存のクリアランス設定付近に曜日別設定を自然に配置してください。
前回作業の曜日設定UIが残っている場合は、それを再利用してください。
保存成功時は、
会議可能時間を保存しました。
Meeting availability hours saved.
と表示してください。
曜日設定の取得・保存APIについても、既存管理APIと同様にサーバー側で管理者認証・認可してください。
━━━━━━━━━━━━━━━━━━━━
15. 本番反映前の最小限テスト
━━━━━━━━━━━━━━━━━━━━
前回は途中停止しており、本番リリースされていません。
未完成状態をそのまま本番反映しないでください。
実装完了後、今回変更した範囲について最低限、
・月~日の設定UIが正常に表示される
・曜日ごとにON/OFFできる
・開始/終了を30分刻みで選択できる
・曜日ごとに異なる設定を保存できる
・保存した設定を再取得できる
・設定が永続化される
・曜日設定が空き時間計算へ反映される
・OFF曜日が「空きなし」になる
・既存の前後クリアランスが反映される
・30分未満の空きが従来通り除外される
ことを確認してください。
━━━━━━━━━━━━━━━━━━━━
16. 既存機能の簡易回帰確認
━━━━━━━━━━━━━━━━━━━━
Site全体の網羅的な再テストは不要です。
ただし本番障害防止のため、今回の変更と直接関係する範囲で、
・既存Microsoft接続状態が壊れていない
・Outlook予定表取得が動作する
・一般公開画面が正常に表示される
・管理者画面が正常に表示される
ことだけ簡易確認してください。
Microsoft OAuthを再設定・再実装する必要はありません。
━━━━━━━━━━━━━━━━━━━━
17. 問題が発生した場合
━━━━━━━━━━━━━━━━━━━━
前回の途中成果に不整合がある場合は、その原因箇所だけを最小差分で修正してください。
前回の途中成果を無条件にすべて削除して作り直さないでください。
一方、前回の途中成果が存在しない場合は、正常動作している現在の本番版を基準として今回の機能だけを実装してください。
途中成果が明らかに破損していて再利用が危険な場合のみ、曜日別会議可能時間設定の範囲内で安全に作り直してください。
正常動作しているOAuth等へ修正範囲を広げないでください。
━━━━━━━━━━━━━━━━━━━━
18. 本番反映
━━━━━━━━━━━━━━━━━━━━
上記の実装と最低限の確認がすべて成功した場合のみ、既存Siteへ本番反映してください。
本番反映後、今回変更した機能と一般公開画面について簡単な動作確認をしてください。
問題がなければ、その時点で作業を終了してください。
━━━━━━━━━━━━━━━━━━━━
19. 作業終了条件
━━━━━━━━━━━━━━━━━━━━
以下が正常動作すれば完成です。
管理者
↓
曜日別会議可能時間設定
↓
曜日ごとにON/OFF
↓
開始・終了を30分刻みで設定
↓
サーバー側へ永続保存
↓
一般公開画面
↓
各日付の曜日設定を会議可能時間として使用
↓
既存Outlook Free/Busyを反映
↓
既存の前後クリアランスを反映
↓
30分以上の空き時間のみ表示
↓
本番反映
ここまで正常動作したら、
・追加改善
・追加機能
・コード整理
・リファクタリング
・UIの追加調整
・網羅的テスト
は行わず、その時点で作業を終了してください。
キーワード:
Outlook 空き時間 公開
Microsoft 365 予定表 外部公開
面談 空き時間 一覧
ChatGPT Sites 使い方
ChatGPT Sites Microsoft 365
Outlook 予定表 Web 公開
