Skip to content

Repository files navigation

manabase

manabase は、Gmail に届く manaba 通知メールを Google Apps Script で処理し、 必要な情報を Supabase に保存するためのプロジェクトです。

Gmail を唯一の入力 source とし、manaba へ直接アクセスするスクレイピングは v1 の対象外とします。

目的

  • manaba の課題、テスト、アンケート、コースニュース通知を Gmail から取り込む。
  • Google Apps Script でメールを分類、正規化し、Supabase に送信する。
  • Supabase では manaba の domain concept ごとに table を分ける。
  • メール固有の情報は source metadata として保存し、domain table に混ぜない。

対象メール

保存対象:

  • レポート公開のお知らせ
  • 小テスト公開のお知らせ
  • 小テスト未提出のお知らせ
  • アンケート公開のお知らせ
  • コースニュース掲示のお知らせ

保存対象外:

  • 成績公開のお知らせ
  • parser が知らない未知の通知

成績公開は manaba/ignored を付ける。未知の通知は manaba/unknown を付けて、 後で Gmail 上で確認できるようにする。

実装状況

含まれているもの:

  • GAS entrypoint
  • Gmail message-level label 処理
  • manaba メール parser
  • Supabase REST client
  • Supabase migration SQL
  • tsdown bundle
  • clasp push 用設定例

Documentation

Development

Package manager は pnpm のみを使います。

pnpm install

利用可能な script:

  • pnpm run build: GAS 用 bundle を dist/ に生成する。
  • pnpm run check: build と lint を実行する。
  • pnpm run lint: Oxlint による type-aware lint と type check を実行する。
  • pnpm run format: lint fix、oxfmt、ESLint fix を実行する。
  • pnpm run clasp:push: build 後に clasp push を実行する。
  • pnpm run clasp:open: Apps Script project を開く。

Setup

Supabase

  1. Supabase project を作成する。
  2. supabase/migrations/001_initial_schema.sql を Supabase SQL Editor などで実行する。
  3. Project URL と service role key を控える。

clasp

初回だけ Google login が必要。

pnpm exec clasp login

Apps Script project を作成または既存 project を使い、.clasp.example.json.clasp.json にコピーして scriptId を入れる。

cp .clasp.example.json .clasp.json

.clasp.json は repository に commit しない。

Apps Script properties

Apps Script の Script Properties に以下を設定する。

  • SUPABASE_URL: required。Supabase project URL。
  • SUPABASE_SERVICE_ROLE_KEY: required。Supabase service role key。
  • MAX_MESSAGES_PER_RUN: optional。default は 20
  • TRIGGER_MINUTES: optional。default は 10

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages