はじめに
Googleスプレッドシートには GOOGLEFINANCE 関数がありますが、
- 取得できない銘柄がある
- 長期間のデータ保存が難しい
- 自動処理・加工に制限がある
といった弱点もあります。
そこで本記事では、
Google Apps Script(GAS)を使って株価データを取得し、スプレッドシートに保存・表示する方法
をわかりやすく解説します。
今回できること
- 米国株の株価(日足)を取得
- OHLC(始値・高値・安値・終値)+出来高を保存
- Googleスプレッドシートでローソク足グラフを表示
- 毎日自動更新(応用)
なぜGASを使うのか?
| 方法 | 特徴 |
|---|---|
| GOOGLEFINANCE | 簡単だが制限あり |
| GAS | 自動化・長期保存・加工が自由 |
👉 分析・検証・ブログ用途にはGASが非常に有効です。
GOOGLEFEINACE関数をA1セルに入力する方法
アップルの株価を2022年1月1日から本日までの株価を取得してシートに表示します。
下記のコードをA1セルに入力してください。
=QUERY(GOOGLEFINANCE("NASDAQ:AAPL", "all", DATE(2022,1,1), TODAY(), "DAILY"),"select Col1,Col2,Col3,Col4,Col5")
実際の表示結果は下記のようになります。

日付の表記を変更する
日付の列の時間の表示は削除するには、A列を選択したら、表示形式→数字→日付を選択してください。

GASで行う場合
Google Apps Scriptでも同じようにできます。
手順①:Googleスプレッドシートを用意
- Googleドライブ → 新規 → Googleスプレッドシート
- メニュー「拡張機能」→「Apps Script」
手順②:GASコードを書く(株価取得)
以下のコードをそのまま貼り付けてください。
function fetchStockDataStooq() {
const symbol = "aapl.us"; // 小文字 + .us
const url = `https://stooq.com/q/d/l/?s=${symbol}&i=d`;
const response = UrlFetchApp.fetch(url);
const csv = Utilities.parseCsv(response.getContentText());
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName("DATA") || ss.insertSheet("DATA");
sheet.clear();
sheet.getRange(1, 1, csv.length, csv[0].length).setValues(csv);
}
手順③:コードを実行
- 保存 → ▶ 実行
- 初回は 権限の承認 が必要です

実行後、スプレッドシートに株価データが表示されます。

注意点:GASの実行制限(Quota)について
Google Apps Script(GAS)には、1日あたりの実行回数や通信回数に制限(Quota) が設定されています。
そのため、株価取得の処理を何度も実行すると、次のようなエラーが表示されることがあります。
Exceeded the daily hits limit
これは コードの不具合ではなく、GASの仕様による制限 です。
なぜこのエラーが出るのか?
主な原因は以下のとおりです。
UrlFetchApp.fetch()を短時間に何度も実行した- テスト中に「実行」ボタンを何度も押した
- 同じ関数の時間トリガーを複数登録してしまった
- 複数銘柄を1銘柄ずつ取得している
特に、外部サイトからデータを取得する処理(UrlFetch)は
Quotaを消費しやすい ため注意が必要です。
対策とおすすめ運用方法
- 株価取得は 1日1回程度 にする
- 動作確認が終わったら 手動実行は控える
- トリガーは 1つだけ登録 する
- 分足など高頻度データ取得には向かない(GASは日足向き)
実行制限に達した場合でも、
Quotaは毎日自動的にリセット されるため、
時間を置けば再び実行できるようになります。
本記事のサンプルコードについて
本記事のサンプルコードは、
- 無料
- 認証不要
- 日足データ取得
を前提としており、個人利用や学習用途での使用 に適しています。
より高頻度なデータ取得や本格的な分析を行う場合は、
専用の株価APIサービスの利用を検討してください。

