# 2026-03-20 作業メモ

## Google Meet → カレンダー自動登録ワークフロー
- nishide@genspark.emailにMeet URLが届いたら自動でGoogleカレンダーに登録
- イベント: summary="Google Meet 会議", 1時間, Asia/Tokyo, URLをlocation&descriptionに
- 返信メールは送らない、チャット通知のみ
- 動作確認済み（2回）

## プロジェクトスケジューラー
### アップロード先
- FTP: beethoven.sakura.ne.jp / user: beethoven / pass: Jy+WJG.Nd26k
- ドキュメントルート: /www/beethoven/cms/
- スケジューラー専用ディレクトリ: /www/beethoven/cms/scheduler/
- 公開URL: https://beethoven.co.jp/scheduler/project_scheduler.html
- Basic認証: ユーザー名 beethoven / パスワード sched2026
- ローカル: /home/work/.openclaw/workspace/project_scheduler.html

### さくらサーバー構造（重要）
- nginx + apache互換（.htaccessが有効）
- WordPressのルート: /www/beethoven/cms/
- /www/beethoven/cms/.htaccess にWordPress rewriteルールあり
- /home/beethoven/www/beethoven/ は別の場所（WordPressファイルなし）
- /www/beethoven/cms/scheduler/.htaccess + .htpasswd でBasic認証

### 実装済み機能
- 大タスク列のドラッグ&ドロップ並び替え
- 小タスクのドラッグ移動（日付・タスク列をまたいで移動可、期日自動更新）
- カスタム種別（追加・編集・削除、色・共有設定）
- カスタム種別のみ小タスクごとにクライアント共有/社内のみ選択可
- ステータス: 対応中・完了の2択
- Basic認証（サーバー側）
- Excelエクスポートに祝日反映・土日祝日行グレー化
- リマインドメール: プロジェクト単位で1通にまとめ送信（全員To）
- 期日超過チップ赤表示・ヘッダーバッジ
- 期間イベントバー（大タスク列に色帯表示、クリックで編集・削除）

### メール送信仕様
- Gmail作成画面を新タブで開く方式（APIキー不要）
- 全メンバーにTo送信
- 担当者名は本文に記載
- プロジェクト単位でまとめて1通（期限超過・当日・前日を整理して記載）

### パスワード
- アプリ内パスワード: sched2026（HTMLに平文あり）
- Basic認証パスワード: sched2026（サーバー側、安全）

## Gmailダウンロード方法（添付ファイル）
- gsk email APIは添付ファイルダウンロード不可
- Chrome CDP経由でwindow._fileB64にbase64取得 → Node.jsでデコード・保存
- ブラウザのGmailセッションを使いfetch()でダウンロード可能

## 重要なID・認証情報
- FTP: beethoven.sakura.ne.jp / beethoven / Jy+WJG.Nd26k
- Basic認証: beethoven / sched2026
- メールID（スケジューラー送信元）: 19d0bcf0c1f38fb8

## 追記 (18:19 UTC)

### スケジューラー追加実装（16:34〜18:19）
- 期間イベント縦帯表示（セル左端に色帯、開始日のみイベント名表示）
- 期間イベントExcel反映（開始日のみ名前、他は色背景）
- カスタム種別チップの色をHTML上に反映（customColor → inlineスタイル）
- カスタム種別の色をExcelにも反映（typeXlsColors関数、明暗判定で白/黒文字）
- 固定種別（提出日・納品日等）の色変更機能（G.builtinColors、dynTypeStyleで動的CSS上書き）
- 色なし（'none'）選択肢追加（白背景・黒文字）
- 小タスク担当者選択：プロジェクト全メンバー＋「全員」選択肢
- リマインド時刻を9時→8時に変更
- UI表現を「送信」→「Gmail下書き作成」に統一
- render後スクロール位置保持（tableWrap scrollLeft/Top保存）
- 初回のみ今日の行へスクロール（G._scrolledToToday フラグ）
- 月折りたたみ機能（G.collapsedMonths、toggleMonth()）
- 月折りたたみをExcelにも反映（collapsedMonthsチェック）
- 内部用Excelヘッダーにタスクのassigneesを表示（t.name + '\n' + assignees）
- Excelファイル名に日付追記（例: 【内部用】プロジェクト名_スケジュール_20260321.xlsx）
- 内部用Excelの小タスク表示から種別名を削除（名前＋担当者のみ）
- クライアント用Excelの小タスク表示から種別名を削除（名前のみ）
- 内部用Excelスケジュール表の先頭にルール3行追加（wrapText:false で1行表示）
- mkStyle関数にwrap引数追加（デフォルトtrue）

### 技術メモ
- G.builtinColors: {submission: '#hex'|'none', ...} で固定種別色を上書き
- hexLum() グローバル関数で輝度計算（Excel内はhexLuminance()でローカル）
- dynTypeStyle: document.headに動的style要素を追加してチップCSSを上書き
- collapsedMonths: {'2026-2': true} のような形式（月は0始まり）
