📧 INVITATION FLOW
招待・参加フロー
新メンバーをワークスペースに迎えるための手順です。管理者(社長または人事担当) が実施します。
⚡ クイックアクション
よく使う操作へのショートカット
🔀 ケース別フローチャート
新規メンバーの種別によって 2 通りのフローを使い分けます。
⭐ 推奨
ケース A. Google Workspace でアカウント発行
@example.co.jp メアドを発行する正規ルート。組織カレンダー共有 ON で個別共有設定が不要になり、ほぼ自動で当アプリに統合される。
手順を見る ↓
業務委託向け
ケース B. 個人 Gmail で参加
業務委託契約者など、@example.co.jp を発行しないケース。本人が個別にカレンダー共有設定を行う必要がある。
手順を見る ↓
A. Google Workspace でアカウント発行 推奨
前提
- 自社ドメイン (例:
example.co.jp) で Google Workspace 契約済み
- 管理コンソール (admin.google.com) に社長・人事担当などの管理者がアクセスできる
管理者側の手順
-
管理コンソールで新規ユーザー追加
admin.google.com → ディレクトリ → ユーザー → 「新しいユーザーの追加」
名 / 姓 / 主メール (例: tanaka.m@example.co.jp) を入力。
部署・役職を「組織部門」に設定し、「メールでログイン情報を送信」を ON。
-
組織のカレンダー共有を ON (1 回設定すれば全員に適用)
管理コンソール → アプリ → Google Workspace → カレンダー → 共有設定
外部共有: OFF (組織内のみ)
内部共有: 「すべての予定の詳細を共有」 を選択
これで @example.co.jp 同士は互いの予定の詳細が見える状態に。
-
当アプリの STAFF マスターに追加
app.js の
STAFF 配列に新規メンバーの情報を追加。
Phase 2 以降は
employees テーブル(Supabase / Aurora)に
INSERT。
スキーマ詳細 →
-
本人にログイン URL を送信
Staff Manager: https://staff.example.co.jp/login.html
発行された example.co.jp アカウントでサインインしてください。
本人側のアクション
- 受信した招待メールから Google Workspace アカウントを有効化
- 初回パスワードを設定
- ブラウザで
https://staff.example.co.jp/login.html を開く
- 「Sign in with Google」ボタンをクリック
example.co.jp アカウントを選択 → 自動でログイン完了
💡 Workspace の組織カレンダー共有が ON になっていれば、追加の共有設定は不要。CEO の管理ダッシュボードに自分のカレンダーが自動的に表示される。
B. 個人 Gmail で参加 業務委託向け
前提
- 業務委託契約者など、
@example.co.jp を発行しないケース
- 個人 Gmail を使い続ける
管理者側の手順
-
本人にメールで以下を依頼
利用したい Gmail アドレスを教えてもらう。
そのカレンダーを CEO のメール宛に共有してもらう (詳細は本人側ステップ 2)。
-
当アプリの STAFF マスターに追加
app.js の STAFF に email: 'xxx@gmail.com' で追加。
calendarId も同じメアドで OK (Google カレンダーのデフォルト)。
-
管理者のカレンダーアプリで「他のカレンダーを追加」
calendar.google.com → 左メニュー「他のカレンダー」横の「+」 → 「カレンダーに登録」
共有してもらったメンバーのメアドを入力 → カレンダー一覧に追加される。
本人側のアクション
-
Gmail / Google アカウントを準備
既にお持ちのもので OK。
-
自分の Google カレンダーを共有
calendar.google.com を開く → 左メニュー「マイカレンダー」 → 自分のカレンダー → 三点リーダー → 「設定と共有」
「特定のユーザーまたはグループと共有」 → 「ユーザーを追加」
共有先: 管理者から案内された会社の管理用メールアドレス(社長・人事担当)
権限: 「予定の詳細をすべて閲覧できる」 を選択 → 「送信」
-
当アプリにログイン
https://staff.example.co.jp/login.html を開く → 「Sign in with Google」 → 自分の Gmail を選択 → ログイン完了。
⚠️ 個人 Gmail の場合は 本人による共有設定 が必須。これをスキップすると管理者ダッシュボードに「予定なし」と表示される。
📆 カレンダーID の確認方法 (上書きしたい場合)
通常はメールアドレス = カレンダーID で OK ですが、別途作成したサブカレンダー (例:「業務専用カレンダー」) を使いたい場合の手順。
- calendar.google.com → 左メニュー「マイカレンダー」 → 対象カレンダー → 「設定と共有」
- 下にスクロール → 「カレンダーの統合」 → 「カレンダーID」をコピー
例: c_abc123def456@group.calendar.google.com
- 当アプリの「Google カレンダー」タブ → 「カレンダーID (上書き)」に貼り付けて保存
🚪 ログアウト・退職フロー
メンバー退職時 (管理者側)
- Workspace 管理コンソールで該当ユーザーを停止 or 削除
- 当アプリの STAFF マスターから該当エントリを削除
履歴を残すなら archived: true フラグ追加。
- 過去のタスクは別メンバーに振替
Phase 2 以降は UPDATE tasks SET assignee_emp_id = '<新担当者ID>' WHERE assignee_emp_id = '<退職者ID>' で再紐付け。
メンバーがログアウトする場合
- ヘッダー右上のユーザーピル横の「ログアウト」ボタン
- セッションがクリアされ、ログイン画面へ戻る
- Google Workspace 側のセッション (Gmail 等) には影響しない
🛠 トラブルシュート
| 症状 | 原因 | 対処 |
| 「登録メンバーではありません」と表示される |
STAFF マスターにメアド未登録 |
app.js STAFF 配列 / Phase 2 以降は employees テーブルにメンバー追加 |
| 管理者カレンダーに「予定なし」と出る |
カレンダー共有設定漏れ |
ケース B-3 の手順で本人が共有設定 |
| Google ボタンが表示されない |
OAuth Client ID 未設定 |
google-auth.js の GOOGLE_CLIENT_ID を本物に置き換え |
| ログイン後に「権限がありません」 |
Workspace ユーザー作成直後の遅延 |
数分待ってから再ログイン |
| カレンダーが英語表示 |
iframe の &hl=ja パラメータ抜け |
google-auth.js の buildEmbedURL を確認 (既に hl=ja 済) |
⚙️ OAuth Client ID 取得手順 (CTO/CEO 一回だけ実施)
- console.cloud.google.com にログイン
- プロジェクト作成:
Staff Manager
-
Google Calendar API を有効化
「APIとサービス」 → 「ライブラリ」 → Google Calendar API を検索 → 「有効にする」
-
「APIとサービス」 → 「OAuth 同意画面」
User Type: 内部 (Workspace 推奨。承認不要、外部監査なし)
アプリ名: Staff Manager
サポートメール: admin@example.co.jp
スコープを追加:
・.../auth/userinfo.email
・.../auth/userinfo.profile
・openid
・.../auth/calendar.readonly ← これがカレンダー閲覧の権限
-
「APIとサービス」 → 「認証情報」 → 「+ 認証情報を作成」 → 「OAuth クライアントID」
種類: ウェブアプリケーション
名前: Staff Manager Web
承認済み JavaScript 生成元:
・開発時: http://127.0.0.1:4321
・本番: https://staff.example.co.jp
-
発行された Client ID をコピー
google-auth.js の GOOGLE_CLIENT_ID に貼り付け。
🗓 カレンダー閲覧の仕組み (個別共有設定が不要になる理由)
このアプリは Google Calendar API の calendar.readonly スコープ をログイン時に同時要求します。
各メンバーのログインフロー
- 「Google でサインイン (カレンダー閲覧権限込み)」をクリック
-
Google の同意画面が開く
Staff Manager がアクセスを要求しています:
✓ あなたのメールアドレス
✓ あなたの個人情報
✓ Googleカレンダーで予定を表示する ← ここがポイント
- 「許可」を押すと、当アプリは access_token を取得
- 当アプリは個別の共有設定なしで、本人のカレンダーを直接 API 取得できる
管理者側 (CEO) が他メンバーのカレンダーを見る仕組み
CEO の access_token を使って https://www.googleapis.com/calendar/v3/calendars/{他メンバーのメアド}/events を叩く。これが成功するための条件:
| シナリオ | 必要な設定 | 推奨度 |
| ケース A. 組織カレンダー共有 ON (Workspace) |
管理コンソールでカレンダー共有を「予定の詳細」に設定 (1 回設定で全員に適用) |
⭐⭐⭐ ベスト |
| ケース B. 個別共有 |
各メンバーが calendar.google.com で「CEO のメアドに共有」設定 |
⭐⭐ 個人 Gmail 利用時 |
| ケース C. ドメイン全体委任 |
サービスアカウント発行 + Workspace 管理者が API スコープ委任 (バックエンド要) |
⭐ Phase 2+ |
💡 当アプリでは ケース A で十分です。Workspace 管理者がカレンダー共有を ON にしておけば、CEO は何もせずに API で全員のカレンダーを取得できます。
組織カレンダー共有の設定 (人事担当・社長が一回だけ)
- admin.google.com にログイン
- アプリ → Google Workspace → カレンダー → 共有設定
- 「外部共有オプション」: 制限なし (or 組織内のみ)
- 「内部共有オプション」: すべての予定の詳細を共有 ← これが鍵
- 保存
→ これで @example.co.jp メンバー同士は互いの予定の詳細を API で取得できる状態になる。
担当: 管理者(社長 / 人事担当) / Date: 2026-05-08