0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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

Last updated at Posted at 2025-06-04

📝 概要

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

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


📌 できること

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

🔧 必要なもの

  • Google アカウント(Gmail利用可)
  • Finnhub.io の無料APIキー(メール認証必須)
  • OpenAI API のAPIキー(gpt-4 または gpt-3.5-turbo

💻 実装手順

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

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

Step 2. スクリプトコード全文(コメント付き)

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情報の早取り” を実現しましょう!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?