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