Googleスプレッドシートで株価を取得して表示させる方法

がいの部屋

はじめに

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スプレッドシートを用意

  1. Googleドライブ → 新規 → Googleスプレッドシート
  2. メニュー「拡張機能」→「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サービスの利用を検討してください。

Copied title and URL