Google スコープ拡張 C2

任意の共有 Google Doc / Sheet(URL指定)を L-memory のグループ辞書(RAG)に取り込めるようにする手順。

これは何?
従来 RAG は drive.file スコープのため「L-memory が作成/明示的に開いたファイル」しか読めませんでした。 個人 Google 連携に下記2スコープを足すと、共有された任意の Doc / Sheet を URL 指定で辞書化できます。 いずれも CASA監査は不要です。
スコープ種別CASA用途
documents.readonlysensitive不要共有 Doc を Docs API で本文抽出
spreadsheets.readonlysensitive不要共有 Sheet を Sheets API でセル抽出
既存(drive.file / calendar.events / openid / email)は維持。OAuthクライアント: 555677033197-…apps.googleusercontent.com(GCPプロジェクト projl-memory-connect / connect.itochaso.biz)

コード変更 実装済(AI)

connect_app.py … 個人 Google フローのスコープに2つ追加(group/Slack用 drive.file は不変)
gdocs_reader.py(新規)… Docs API / Sheets API で本文・セル値をテキスト化
group_knowledge.py … drive export で取れない共有ファイルのみ Docs/Sheets API にフォールバック。テナント分離(group_id厳格)・learning_guard は不変

あなたの作業 手動(伊藤)

① GCPコンソールで同意画面にスコープを追加

  1. Google Cloud Console → プロジェクト projl-memory-connect を選択
  2. 「APIとサービス」→「OAuth 同意画面」→「データアクセス(スコープ)」を編集
  3. 「スコープを追加または削除」で次を追加して保存:
     .../auth/documents.readonly(Google Docs API)
     .../auth/spreadsheets.readonly(Google Sheets API)
  4. 「ライブラリ」で Google Docs APIGoogle Sheets API を有効化(未有効なら)
sensitive枠なので、本番公開時は既存 calendar.events と同じ審査申請にまとめてOK(CASA不要)。

② 再同意(Googleを繋ぎ直す)

  1. スコープを増やしたので、既存トークンには新スコープが含まれません
  2. 配布リンク https://connect.itochaso.biz/?c=<client> から Google を接続し直す
  3. 同意画面に Docs/Sheets 権限が追加表示 → 再同意でトークン更新(prompt=consent 固定なので必ず再発行)

③ 動作確認

グループで任意の共有 Doc/Sheet の URL を送って「辞書に登録」→ drive.file で読めない共有ファイルでも本文が取り込まれればOK。

制約・注意

PDF / 画像 / Word / Excel(非Google形式)は読めません(Docs/Sheets API は Google ネイティブ形式専用)
フォルダURLの一括取り込みは不可。任意フォルダ走査は drive.readonly(restricted) が必要で別マイルストーン。後から drive.readonly を足す時は再同意がもう一度発生(「1回で済む」は誤り)
・ファイルは閲覧者/編集者として共有されている必要あり(未共有の他人ファイルは 403)
・取り込んだ外部資料も group_id 厳格スコープで保存され、全体共有(shared)には昇格しない(learning_guard 適用)
Testing 状態だと sensitive スコープのトークンは7日で失効。本番は同意画面を Publish(In production) に

次マイルストーン

・フォルダ一括(drive.readonly restricted + CASA + 再同意)
・PDF / 画像の本文抽出(OCR / Drive export 別経路)
・未共有ファイル取り込み時のエラー文言最適化