NASDAQのIPO情報を自動取得し、ChatGPTで企業概要を生成して毎朝メールで受け取る方法【Google Apps Script + GPT】


## 📝 概要

今後30日以内にNASDAQに上場予定の企業情報を自動で取得し、OpenAIのGPT-4を使って**企業概要を日本語で要約**し、メールで通知する仕組みを、Google Apps Script（GAS）を使って構築する方法を紹介します。

投資、競合分析、新規事業の情報収集などに活用できる自動化スクリプトです。

---

## 📌 できること

* FinnhubのIPOカレンダーAPIで「今後30日以内にIPO予定のNASDAQ銘柄」を取得
* OpenAIのGPT-4 APIを用いて、各企業の事業概要を日本語で自動要約（200文字以内）
* Gmail経由で自分宛てに毎朝通知

---

## 🔧 必要なもの

* [x] Google アカウント（Gmail利用可）
* [x] [Finnhub.io](https://finnhub.io/) の無料APIキー（メール認証必須）
* [x] [OpenAI API](https://platform.openai.com/account/api-keys) のAPIキー（`gpt-4` または `gpt-3.5-turbo`）

---

## 💻 実装手順



### Step 1. Google Apps Script プロジェクトを作成

* Google ドライブ → 「新規」→「その他」→「Apps Script」
* 新規スクリプトファイルを作成し、次のコードを貼り付け

---

### Step 2. スクリプトコード全文（コメント付き）

```javascript
const FINNHUB_API_KEY = 'YOUR_FINNHUB_API_KEY'; // ← FinnhubのAPIキーを入れる
const OPENAI_API_KEY = 'YOUR_OPENAI_API_KEY';   // ← OpenAIのAPIキーを入れる
const RECIPIENT_EMAIL = 'your.email@example.com'; // ← 通知先メールアドレス

function upcomingNasdaqIPOReport() {
  const today = new Date();
  const from = Utilities.formatDate(today, "GMT", "yyyy-MM-dd");
  const to = Utilities.formatDate(new Date(today.getTime() + 30 * 24 * 60 * 60 * 1000), "GMT", "yyyy-MM-dd");

  const url = `https://finnhub.io/api/v1/calendar/ipo?from=${from}&to=${to}&token=${FINNHUB_API_KEY}`;
  const response = UrlFetchApp.fetch(url, { muteHttpExceptions: true });
  const data = JSON.parse(response.getContentText());

  if (!data.ipoCalendar || data.ipoCalendar.length === 0) {
    GmailApp.sendEmail(RECIPIENT_EMAIL, "今後30日間のIPO情報", "今後30日間に予定されているIPOはありませんでした。");
    return;
  }

  const nasdaqCompanies = data.ipoCalendar.filter(item => item.exchange && item.exchange.includes("NASDAQ"));
  if (nasdaqCompanies.length === 0) {
    GmailApp.sendEmail(RECIPIENT_EMAIL, "今後30日間のNASDAQ IPO", "NASDAQ上場のIPOは今後30日間で見つかりませんでした。");
    return;
  }

  const summaries = [];
  for (const company of nasdaqCompanies.slice(0, 5)) {  // 最大5件（実行時間制限対策）
    const name = company.name || company.symbol;
    const symbol = company.symbol;
    const ipoDate = company.date;

    const marketInfo = getMarketInfo(symbol);
    const summary = getCompanySummary(name);

    summaries.push(`【${name}｜${symbol}｜${marketInfo}｜IPO予定日: ${ipoDate}】\n${summary}`);
    Utilities.sleep(2000);
  }

  const body = summaries.join("\n\n---\n\n");
  GmailApp.sendEmail(RECIPIENT_EMAIL, "今後30日間のNASDAQ IPO企業概要", body);
}

function getMarketInfo(symbol) {
  const url = `https://finnhub.io/api/v1/stock/profile2?symbol=${symbol}&token=${FINNHUB_API_KEY}`;
  try {
    const response = UrlFetchApp.fetch(url);
    const json = JSON.parse(response.getContentText());
    return json.exchange || "市場不明";
  } catch (e) {
    return "市場不明";
  }
}

function getCompanySummary(companyName) {
  const prompt = `以下の企業について、投資家向けに200文字以内で簡潔に企業概要を日本語で説明してください：\n企業名: ${companyName}`;

  const payload = {
    model: "gpt-4",
    messages: [{ role: "user", content: prompt }],
    temperature: 0.7
  };

  const options = {
    method: "post",
    contentType: "application/json",
    headers: {
      Authorization: `Bearer ${OPENAI_API_KEY}`
    },
    payload: JSON.stringify(payload),
    muteHttpExceptions: true
  };

  try {
    const response = UrlFetchApp.fetch("https://api.openai.com/v1/chat/completions", options);
    const json = JSON.parse(response.getContentText());
    return json.choices[0].message.content.trim();
  } catch (e) {
    return "企業概要の取得に失敗しました。";
  }
}
```

---

### Step 3. トリガー設定（自動実行）

* スクリプトエディタ上部の「時計マーク」からトリガー追加
* 関数名：`upcomingNasdaqIPOReport`
* イベントの種類：時間主導型 → 日次 → 好きな時間（例：朝8時）

---

## ✅ メール通知の例

```
【HealthTech Inc｜HLTH｜NASDAQ Global Market｜IPO予定日: 2025-06-15】
HealthTech Incは遠隔医療とウェアラブル診断デバイスを開発するスタートアップです...

---

【AI Robotics Ltd｜AIRB｜NASDAQ Capital Market｜IPO予定日: 2025-06-18】
AI Roboticsは産業用ロボティクスと自律移動システムを開発しています...
```

---

## 💡 応用アイデア

* IPOデータをスプレッドシートにログ保存
* Slack通知に切り替え
* 企業ごとにPDFレポート自動生成

---

## 🏁 まとめ

今回のスクリプトを使えば、**手動でIPO情報を検索する手間をゼロにして、GPTによる要約付きで毎日受け取れる**ようになります。

投資家・新規事業開発・VC/CVC担当者におすすめの情報収集自動化術です。

---

## 🙌 最後に

「この企業注目」と思ったら、さらに詳細を調べるきっかけにも。
自分用ダッシュボードを組み合わせて、**“AIによるIPO情報の早取り”** を実現しましょう！