GASで日本株式の株価取得する方法を解説!個別株と上場投資信託の基準価格も

2021年7月18日

Google Apps Script(GAS)を使って日本の株式市場における株価を取得する方法を紹介します。

GASを使えば東証など上場している個別株の株価取得が簡単に可能です。

上場企業の証券コードをキーとして、グーグルファイナンスの情報をスクレイピングして株価を入手する手順を解説します。

スプレッドシートに日本の株価取得の関数がない

スプレッドシートには、エクセルにはない関数として、GOOGLEFINANCE関数があります。

スプレッドシートにはGOOGLEFINANCE関数で、グーグルファイナンスから株価を取得(ただし日本株式の株価は取得不可)

このGOOGLEFINANCEは、グーグルファイナンスのサービスから、特定銘柄の株価を取得することができる関数です。

単に最新の株価を取得するだけでなく、過去の一定期間の日次または週次の株価をまとめて取得できるので、便利です。

しかし、残念ながら、GOOGLEFINANCE関数は米国株式のみを対象としているため、東証などに上場している日本企業の株価は取得できません。

スプレッドシートのGOOGLEFINANCE関数のリファレンス

多くのスプレッドシート利用ユーザーがGOOGLEFINANCE関数で日本の株価を取得できると思って試してみるものの、取得できず落胆しています。

グーグルファイナンスに日本企業の株価が掲載

ただ、Googleファイナンスのサービスにアクセスして操作してみると、東京証券取引所に上場している日本企業の株価も掲載されていることが分かります。

Googleファイナンスのサービスでは日本企業の上場会社の株価も掲載

スプレッドシートに用意されているGOOGLEFINANCE関数では取得できないものの、データ提供元となっているグーグルファイナンスには、日本の株価情報も保持しています。

そのため、Google Apps Script(GAS)を活用し、グーグルファイナンスからスクレイピングするスクリプトを用意すれば、日本の株価を取得可能です。

Googleファイナンスをスクレイピングするのは可能?

スクレイピングする上で気になるポイントは、Googleファイナンスがスクレイピングを許可しているかです。

Yahooファイナンスなど株価の情報を提供するサービスは、スクレイピングを禁じているケースが多いです。

そこで、Googleファイナンスも禁止されていないか、念のため調査しました。

google.comがクローラー向けにクロール(スクレイピング)OK・NGのページを一覧化しているrobots.txtを確認してみます。

google.comのクロール許可を示すrobots.txt

google.comのrobots.txtのリンク

financeのディレクトリについて検索して確認すると、「Allow」となっており、クロールを許可していることが分かりました。

そのため、GoogleファイナンスはGoogle Apps Script(GAS)などでスクレイピング可能であることが確認できました。

GASで日本企業の株価取得するサンプルコード

実際にGoogle Apps Script(GAS)で日本企業の株価を取得するサンプルコードを解説します。

スクレイピングが必要になるため、Parserライブラリを事前に導入する必要があります。

スクリプトエディタのライブラリ右にある+マークをクリックし、ParserライブラリのスクリプトIDを入力してください。

「1Mc8BthYthXx6CoIz90-JiSzSafVnT6U3t0z_W3hLTAX5ek4w0G_EIrNw」

GASのライブラリ追加画面で、ParserのスクリプトIDを入力し検索ボタンをクリックする

※詳細なParser設定手順はGASのスクレイピング手順をまとめた記事を参照ください。

変数で定義した銘柄コードのグーグルファイナンスのページをフェッチし、株価の部分をスクレイピングします。

Google Apps Script(GAS)でグーグルファイナンスから日本の上場企業の株価を取得するサンプルコード
function getStockPrice() {
  //銘柄コードを変数で定義する(7203はトヨタ自動車のコード)
  let code = "7203";
  //GoogleファイナンスURLと銘柄コードを組み合わせ、スクレイピング先URLを定義
  let url = "https://www.google.com/finance/quote/" + code + ":TYO";
  //スクレイピング先URLに対し、フェッチしてHTMLソースを取得
  let html = UrlFetchApp.fetch(url).getContentText();
  //HTMLソースから株価部分を抽出し、変数に格納
  let stockPrice = Parser.data(html)
    .from('<div class="YMlKec fxKbKc">')
    .to('</div>')
    .build();
  //実行ログにスクレイピングで取得した株価を表示
  console.log("株価:"+stockPrice);
}

コメント部分を除けば、実質10行ほどのコードで日本の株価をスクレイピングするスクリプトが作成できました。

GASサンプルコードを実行すると、実行ログにトヨタ自動車の株価が取得できます。

Google Apps Script(GAS)でグーグルファイナンスから日本の上場企業の株価を取得するサンプルコードを実行した結果、実行ログに株価が表示

2021年7月16日(金)終値のトヨタ自動車の株価がグーグルファイナンスから取得できました。

3行目のcodeに格納する銘柄コードを変更すると、他の上場企業の株価だけでなく、投資信託の価格を取得できます。

日本株価取得のGASサンプルの応用

今回紹介したGoogle Apps Script(GAS)のサンプルコードは色々な応用が可能となっています。

サンプルコードではログ出力していますが、スプレッドシートに出力すれば、株価をスプレッドシートに自動的に記録することができます。

さらに、スプレッドシートの独自関数としてGAS関数を用意すれば、スプレッドシートから株価を取得できるオリジナル関数も作成可能です。

上場投資信託(ETF)の基準価格も

Google Apps Script(GAS)のサンプルコードでは、上場企業の証券コードを変数で指定すると株価が取得できるとお伝えしてきました。

日本の個別株だけでなく、上場投資信託(ETF)の基準価格も取得可能です。

ETFにも個別株と同じように証券コードが割り当てられています。

基準価格を知りたいETFの証券コードをGASの変数に定義することで、ETFの現在価格が得られます。

スプレッドシートで株価を取得するGAS関数の作成も

Google Apps Script(GAS)を使えば前述したように、グーグルファイナンスのページから株価を取得できました。

GASで作成した株価取得の関数を応用すれば、スプレッドシートのオリジナル関数として利用可能です。

スプレッドシートで株式などの資産管理をしている人は株価を取得できるので、ぜひGASによる株価取得の応用例として試してみてください。

まとめ・終わりに

今回、Google Apps Script(GAS)でグーグルファイナンスのサイトをスクレイピングして、日本の上場企業の株価を取得する方法を紹介しました。

グーグルファイナンスには日本の株価の情報が掲載されており、スクレイピングも許可されていて、取得可能です。

GASによるスクレイピングでグーグルファイナンスから、銘柄コードの株価を取得するサンプルコードを解説しました。

日本の株価情報をGASで自動的に取得できれば、データ蓄積やお金を稼ぐプログラムなどを作ることができます。

ぜひ、今回紹介した方法を参考に、日本企業の株価をGASで取得してみましょう。