株価データをスプレッドシートで管理したいと考えたことはありませんか。GOOGLEFINANCE関数は便利ですが、取得できるデータの種類や頻度に限界があります。特にリアルタイムの株価や詳細な過去データが必要な場合、別の方法を検討する必要があります。この記事では、株価APIを活用してGOOGLEFINANCEを超えるデータ取得方法を詳しく解説します。APIを使えば、任意の銘柄の日次・分次データを自動で取得し、分析に活用できます。
【要点】株価APIで自動取得する3つのステップ
- Alpha Vantage APIの無料キーを取得: 株価データの取得に必要なAPIキーを公式サイトから無料で発行します。
- IMPORTDATA関数でJSONデータをインポート: スプレッドシートのIMPORTDATA関数を使ってAPIから返されたJSON形式のデータをセルに取り込みます。
- SPLIT・QUERY関数でデータを整形: 取り込んだデータを分割・整形し、日付・終値・出来高などの列に整理します。
ADVERTISEMENT
目次
株価APIでGOOGLEFINANCEを補完する理由
GOOGLEFINANCE関数は国際的な主要銘柄の株価や為替レートを取得できます。しかし、日本の銘柄ではティッカーが正しく認識されない場合や、過去データの期間が限られるなどの弱点があります。また、リアルタイムのティックデータや1分足などの高頻度データには対応していません。株価APIを利用すれば、これらの制限を超えて、より詳細で自由度の高いデータを取得できます。特に投資分析や機械学習の入力データとして活用したい場合、APIを使った自動取得が効果的です。
Alpha Vantage APIを使った株価データ自動取得の手順
手順1: APIキーを取得する
- Alpha Vantageの公式サイトにアクセス
ブラウザでhttps://www.alphavantage.co/support/#api-keyにアクセスします。 - 必要事項を入力してキーを発行
名前とメールアドレスを入力し、送信ボタンをクリックします。数分後に登録したメールアドレスにAPIキーが届きます。 - APIキーを控える
メールに記載されたキー(例:demo)をコピーしてスプレッドシートの別シートに貼り付けておきます。
手順2: スプレッドシートでIMPORTDATA関数を使う
- 関数の構文を準備
Alpha VantageのAPIエンドポイントは以下の形式です。=IMPORTDATA("https://www.alphavantage.co/query?function=TIME_SERIES_DAILY&symbol=IBM&apikey=demo&datatype=csv")
この例ではIBMの日次データをCSV形式で取得します。symbol部分を取得したい銘柄のティッカーに変更します。 - セルに関数を入力
スプレッドシートの任意のセル(例:A1)に先ほどの関数を入力します。ただし、無料APIキー「demo」はテスト用であり、実際のデータ取得には専用キーを使う必要があります。 - データの更新頻度を設定
IMPORTDATA関数はシートを開くたびに自動更新されます。ただし、Alpha Vantageの無料プランでは1分間に5回までの制限があります。頻繁に更新したい場合は、スクリプトを使ったバッチ処理を検討します。
手順3: QUERY関数で必要なデータだけ抽出する
- 取得したデータを確認
IMPORTDATAが返すデータは日付、始値、高値、安値、終値、出来高の順に並んでいます。最初の行はヘッダーです。 - QUERYで期間を指定
例えば、直近10日間の終値だけを抽出するには以下のようにします。=QUERY(A:G, "select A, E where A is not null limit 10", 1)
ここでA列が日付、E列が終値です。limit句で表示件数を絞ります。 - チャート作成の準備
抽出したデータを基にスプレッドシートのグラフ機能で株価チャートを作成できます。
Google Apps Scriptでより高度な自動化を行う方法
IMPORTDATA関数はシンプルですが、エラー処理が難しく、大量のデータを定期的に取得するには不向きです。そこで、Google Apps Scriptを使ってAPIを呼び出し、スプレッドシートに書き込む方法がおすすめです。これにより、更新時刻の指定やエラー時の再試行などを柔軟に制御できます。
スクリプトエディタを開く
- 拡張機能メニューから開く
スプレッドシートのメニューバーから「拡張機能」→「Apps Script」を選択します。 - プロジェクト名を設定
左側の「無題のプロジェクト」をクリックして「株価取得スクリプト」などに変更します。
スクリプトコードを記述する
- 関数を作成
以下のコードをエディタに貼り付けます。function getStockData() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var apiKey = 'YOUR_API_KEY'; // 実際のキーに置き換え
var symbol = 'IBM';
var url = 'https://www.alphavantage.co/query?function=TIME_SERIES_DAILY&symbol=' + symbol + '&apikey=' + apiKey + '&datatype=csv';
var response = UrlFetchApp.fetch(url);
var csv = response.getContentText();
var rows = csv.split('\n');
var data = [];
for (var i = 0; i < rows.length; i++) {
data.push(rows[i].split(','));
}
sheet.getRange(1, 1, data.length, data[0].length).setValues(data);
} - トリガーを設定
左側の「トリガー」アイコンをクリックし、「トリガーを追加」ボタンを押します。実行する関数に「getStockData」、イベントのソースを「時間主導型」、時間間隔を「1時間ごと」などに設定します。 - スクリプトを実行してテスト
エディタで「実行」ボタンを押すと、初回は承認が必要です。指示に従って許可すると、シートにデータが書き込まれます。
ADVERTISEMENT
株価API利用時の注意点と制限
APIキーのレート制限に注意する
Alpha Vantageの無料プランでは1分間に5回、1日あたり500回のリクエスト制限があります。頻繁に更新したい場合は、有料プランへのアップグレードを検討するか、複数のAPIキーを用意して分散する方法もあります。
データが更新されない場合の対処法
IMPORTDATA関数はスプレッドシートを開くたびに自動更新されますが、頻度が低い場合は手動で再計算をトリガーします。メニューの「データ」→「関数の再計算」→「今すぐ実行」を選択すると強制的に更新できます。また、Apps Scriptの場合はトリガーの間隔を短くしすぎないように注意します。
日本の銘柄を取得するときのティッカー表記
日本の株式市場の銘柄を取得するには、ティッカーに「.T」を付ける必要があります。例えばトヨタ自動車は「TM」ではなく「7203.T」と指定します。ただし、Alpha Vantageがサポートしている市場は限られているため、事前に公式ドキュメントで確認してください。
データの精度とタイムゾーン
APIから返される日時はUTC(協定世界時)が基準です。日本時間に変換したい場合は、QUERYやスクリプト内で9時間加算する処理を追加します。また、配当落ちや株式分割の調整は行われていないことが多いので、正確な分析には調整済みデータを提供するAPI(例:Tiingo)を検討します。
GOOGLEFINANCEと株価APIの比較表
| 項目 | GOOGLEFINANCE | Alpha Vantage API |
|---|---|---|
| 取得できるデータ | リアルタイム株価、過去20営業日程度の日中データ | 過去20年超の日次データ、1分・5分などの高頻度データ |
| 対応銘柄 | 主要国際銘柄(日本株は一部のみ) | 全世界の証券取引所の銘柄(一部制限あり) |
| 更新頻度 | 約20分遅延 | リアルタイム(有料プラン)、無料は15分遅延 |
| 使いやすさ | 関数を入力するだけ | APIキー取得と関数またはスクリプトの設定が必要 |
| 制限 | セルの再計算頻度に依存 | 無料プランは1分5回・1日500回の制限 |
まとめ
株価APIを活用することで、GOOGLEFINANCEでは難しい詳細なデータや過去データを自動取得できるようになります。Alpha Vantageの無料APIとIMPORTDATA関数の組み合わせで簡単に始められ、Apps Scriptを使えば定期実行も可能です。まずはお試しキーで動作を確認し、自分の分析に必要な銘柄と頻度に合わせて設定を調整してみてください。次のステップとして、取得したデータを基に予測モデルを構築することも検討できます。
ADVERTISEMENT
超解決 第一編集部
疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。
Googleスプレッドシートの人気記事ランキング
- 【Googleスプレッドシート】GOOGLEFINANCE関数で株価・為替を取得!リアルタイムデータの呼び出し
- 【Googleスプレッドシート】印刷範囲を指定して印刷!特定範囲だけPDFや紙に出す手順
- 【Googleスプレッドシート】新しいスプレッドシートを作成する3つの方法!ドライブ・URL・テンプレート
- 【Googleスプレッドシート】数値の連続データを自動入力!オートフィルの活用
- 【Googleスプレッドシート】ダークモードを有効にする!目に優しい配色への切替
- 【Googleスプレッドシート】株価APIで株式データを自動取得!GOOGLEFINANCE超え活用
- 【Googleスプレッドシート】共有相手が編集できない時のチェック!権限と許可状態の確認
- 【Googleスプレッドシート】ページ設定で用紙サイズと向きを調整!印刷レイアウトの基本
- 【Googleスプレッドシート】Excelファイルxlsxをインポートする手順!ドラッグ&ドロップで取り込み
- 【Googleスプレッドシート】条件付き書式をコピーする!書式のみペーストの活用
