# GAS デプロイ & doGet テスト手順

`GmailToWebhook.js` を Google Apps Script のウェブアプリとして公開し、
ローカルbackendからPull取得できる状態にする手順。

## 1. スクリプト作成

1. https://script.google.com/ で新規プロジェクトを作成
2. `GmailToWebhook.js` の中身を全てコピペ
3. プロジェクト名を「YahooMessageManager-GAS」等に

## 2. トークン設定（重要・コードに直書きしない）

1. 左メニュー「プロジェクトの設定（歯車）」
2. 「スクリプト プロパティ」→「スクリプト プロパティを追加」
3. プロパティ名: `WEBHOOK_TOKEN`（`GAS_TOKEN` でも可。両対応）
4. 値: 長いランダム文字列（例: 32桁以上）。これを控える
   - 例の生成: PowerShellで `[guid]::NewGuid().ToString("N") + [guid]::NewGuid().ToString("N")`

## 3. デプロイ

1. 右上「デプロイ」→「新しいデプロイ」
2. 種類: 「ウェブアプリ」
3. 説明: v0.1
4. 次のユーザーとして実行: **自分**
5. アクセスできるユーザー: **全員**
6. デプロイ → 初回は Gmail 読み取り権限の承認を求められる → 許可
7. 発行された「ウェブアプリURL」を控える（`https://script.google.com/macros/s/.../exec`）

## 4. doGet 動作テスト

ブラウザまたは curl で以下にアクセス（`{URL}` と `{TOKEN}` を置換）:

```
# 正常系（直近30日の取引メッセージをJSONで返す）
{URL}?token={TOKEN}

# 期間指定
{URL}?token={TOKEN}&since=2026-06-01T00:00:00

# 認証失敗（unauthorized が返ることを確認）
{URL}?token=wrong

# 診断モード（0件のときの原因切り分け: クエリ・件数・件名のみ返る）
{URL}?token={TOKEN}&debug=1
```

期待レスポンス（例）:

```json
{
  "ok": true,
  "count": 1,
  "messages": [
    {
      "source_message_id": "...",
      "received_at": "2026-06-04T02:09:00.000Z",
      "sender": "auction-master@mail.yahoo.co.jp",
      "subject": "Yahoo!オークション - 取引メッセージ：...(f1227209818)",
      "body": "...",
      "yahoo_transaction_id": "f1227209818",
      "transaction_url": "https://contact.auctions.yahoo.co.jp/seller/top?aid=...",
      "body_hash": "..."
    }
  ],
  "fetched_at": "..."
}
```

## 5. backend に登録

`%APPDATA%\YahooMessageManager\config.json` に:

```json
{
  "gas_url": "{URL}",
  "gas_token": "{TOKEN}"
}
```

→ backend で `POST /api/sync` を叩くと取り込まれる。

## 6.5 ワンコマンド実機検証（推奨）

config.json 設定後、またはURL/tokenを直接渡して一括検証できる:

```powershell
cd H:\yahoo-message-manager\backend
python verify_live.py
# または
python verify_live.py "{URL}" "{TOKEN}"
```

検証内容: 誤token拒否 / debug件数 / 各フィールド / body_hash整合 / 取り込み・重複・集計。
最後に `ALL PASS → React UI へ進んでよい` か `FAILED → 修正が必要` が出る。

## 確認チェックリスト

- [ ] `?token=wrong` で `{"ok":false,"error":"unauthorized"}` が返る
- [ ] 正しいtokenで `messages` が返る
- [ ] `yahoo_transaction_id` がオークションID（例 f1227209818）になっている
- [ ] `transaction_url` が取引ナビURLになっている
- [ ] `source_message_id` が空でない
- [ ] `received_at` がISO文字列（...Z）

## 注意

- ウェブアプリURL自体は秘匿情報。SNS等に貼らない
- コードを修正したら「デプロイを管理」→ 既存デプロイを編集して新バージョンを反映
  （URLを変えたくない場合は「新しいバージョン」を選ぶ）
