📧 INVITATION FLOW

招待・参加フロー

新メンバーをワークスペースに迎えるための手順です。管理者(社長または人事担当) が実施します。

📋 目次

⚡ クイックアクション

よく使う操作へのショートカット

🔀 ケース別フローチャート

新規メンバーの種別によって 2 通りのフローを使い分けます。
業務委託向け

ケース B. 個人 Gmail で参加

業務委託契約者など、@example.co.jp を発行しないケース。本人が個別にカレンダー共有設定を行う必要がある。

手順を見る ↓

A. Google Workspace でアカウント発行 推奨

前提

管理者側の手順

  1. 管理コンソールで新規ユーザー追加
    admin.google.com → ディレクトリ → ユーザー → 「新しいユーザーの追加」
    名 / 姓 / 主メール (例: tanaka.m@example.co.jp) を入力。
    部署・役職を「組織部門」に設定し、「メールでログイン情報を送信」を ON。
  2. 組織のカレンダー共有を ON (1 回設定すれば全員に適用)
    管理コンソール → アプリ → Google Workspace → カレンダー → 共有設定
    外部共有: OFF (組織内のみ)
    内部共有: 「すべての予定の詳細を共有」 を選択
    これで @example.co.jp 同士は互いの予定の詳細が見える状態に。
  3. 当アプリの STAFF マスターに追加
    app.jsSTAFF 配列に新規メンバーの情報を追加。
    Phase 2 以降は employees テーブル(Supabase / Aurora)に INSERTスキーマ詳細 →
  4. 本人にログイン URL を送信
    Staff Manager: https://staff.example.co.jp/login.html
    発行された example.co.jp アカウントでサインインしてください。

本人側のアクション

  1. 受信した招待メールから Google Workspace アカウントを有効化
  2. 初回パスワードを設定
  3. ブラウザで https://staff.example.co.jp/login.html を開く
  4. 「Sign in with Google」ボタンをクリック
  5. example.co.jp アカウントを選択 → 自動でログイン完了
💡 Workspace の組織カレンダー共有が ON になっていれば、追加の共有設定は不要。CEO の管理ダッシュボードに自分のカレンダーが自動的に表示される。

B. 個人 Gmail で参加 業務委託向け

前提

管理者側の手順

  1. 本人にメールで以下を依頼
    利用したい Gmail アドレスを教えてもらう。
    そのカレンダーを CEO のメール宛に共有してもらう (詳細は本人側ステップ 2)。
  2. 当アプリの STAFF マスターに追加
    app.js の STAFF に email: 'xxx@gmail.com' で追加。
    calendarId も同じメアドで OK (Google カレンダーのデフォルト)。
  3. 管理者のカレンダーアプリで「他のカレンダーを追加」
    calendar.google.com → 左メニュー「他のカレンダー」横の「+」 → 「カレンダーに登録」
    共有してもらったメンバーのメアドを入力 → カレンダー一覧に追加される。

本人側のアクション

  1. Gmail / Google アカウントを準備
    既にお持ちのもので OK。
  2. 自分の Google カレンダーを共有
    calendar.google.com を開く → 左メニュー「マイカレンダー」 → 自分のカレンダー → 三点リーダー → 「設定と共有」
    「特定のユーザーまたはグループと共有」 → 「ユーザーを追加」
    共有先: 管理者から案内された会社の管理用メールアドレス(社長・人事担当)
    権限: 「予定の詳細をすべて閲覧できる」 を選択 → 「送信」
  3. 当アプリにログイン
    https://staff.example.co.jp/login.html を開く → 「Sign in with Google」 → 自分の Gmail を選択 → ログイン完了。
⚠️ 個人 Gmail の場合は 本人による共有設定 が必須。これをスキップすると管理者ダッシュボードに「予定なし」と表示される。

📆 カレンダーID の確認方法 (上書きしたい場合)

通常はメールアドレス = カレンダーID で OK ですが、別途作成したサブカレンダー (例:「業務専用カレンダー」) を使いたい場合の手順。
  1. calendar.google.com → 左メニュー「マイカレンダー」 → 対象カレンダー → 「設定と共有」
  2. 下にスクロール → 「カレンダーの統合」 → 「カレンダーID」をコピー
    例: c_abc123def456@group.calendar.google.com
  3. 当アプリの「Google カレンダー」タブ → 「カレンダーID (上書き)」に貼り付けて保存

🚪 ログアウト・退職フロー

メンバー退職時 (管理者側)

  1. Workspace 管理コンソールで該当ユーザーを停止 or 削除
  2. 当アプリの STAFF マスターから該当エントリを削除
    履歴を残すなら archived: true フラグ追加。
  3. 過去のタスクは別メンバーに振替
    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.jsGOOGLE_CLIENT_ID を本物に置き換え
ログイン後に「権限がありません」 Workspace ユーザー作成直後の遅延 数分待ってから再ログイン
カレンダーが英語表示 iframe の &hl=ja パラメータ抜け google-auth.jsbuildEmbedURL を確認 (既に hl=ja 済)

⚙️ OAuth Client ID 取得手順 (CTO/CEO 一回だけ実施)

  1. console.cloud.google.com にログイン
  2. プロジェクト作成: Staff Manager
  3. Google Calendar API を有効化
    「APIとサービス」 → 「ライブラリ」 → Google Calendar API を検索 → 「有効にする」
  4. 「APIとサービス」 → 「OAuth 同意画面」
    User Type: 内部 (Workspace 推奨。承認不要、外部監査なし)
    アプリ名: Staff Manager
    サポートメール: admin@example.co.jp
    スコープを追加:
    .../auth/userinfo.email
    .../auth/userinfo.profile
    openid
    .../auth/calendar.readonlyこれがカレンダー閲覧の権限
  5. 「APIとサービス」 → 「認証情報」 → 「+ 認証情報を作成」 → 「OAuth クライアントID」
    種類: ウェブアプリケーション
    名前: Staff Manager Web
    承認済み JavaScript 生成元:
    ・開発時: http://127.0.0.1:4321
    ・本番: https://staff.example.co.jp
  6. 発行された Client ID をコピー
    google-auth.jsGOOGLE_CLIENT_ID に貼り付け。

🗓 カレンダー閲覧の仕組み (個別共有設定が不要になる理由)

このアプリは Google Calendar API の calendar.readonly スコープ をログイン時に同時要求します。

各メンバーのログインフロー

  1. 「Google でサインイン (カレンダー閲覧権限込み)」をクリック
  2. Google の同意画面が開く
    Staff Manager がアクセスを要求しています:
    ✓ あなたのメールアドレス
    ✓ あなたの個人情報
    ✓ Googleカレンダーで予定を表示する  ← ここがポイント
  3. 「許可」を押すと、当アプリは access_token を取得
  4. 当アプリは個別の共有設定なしで、本人のカレンダーを直接 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 で全員のカレンダーを取得できます。

組織カレンダー共有の設定 (人事担当・社長が一回だけ)

  1. admin.google.com にログイン
  2. アプリ → Google Workspace → カレンダー → 共有設定
  3. 「外部共有オプション」: 制限なし (or 組織内のみ)
  4. 「内部共有オプション」: すべての予定の詳細を共有 ← これが鍵
  5. 保存
→ これで @example.co.jp メンバー同士は互いの予定の詳細を API で取得できる状態になる。
担当: 管理者(社長 / 人事担当) / Date: 2026-05-08