調査&まとめ

Googleスプレッドシートで株価を自動取得し表示する方法


更新日:

株式投資をしていると、複数口座の株を合計して損益計算したくなったりしませんでしょうか。

また、データをスプレッドシートに取り込んで加工し、細かな分析をしてみたいという事もあるでしょう。

自分がまさにそれだったので、Googleスプレッドシートを用いて株価を自動取得(スクレイピング)してみることにしました。

証券コードを入力することで、株価、PER、PBR、EPS、配当利回りなどを自動取得できるようになっています。

方法と、スプレッドシートのデータを公開したいと思います。

なお、「このシートナイスやな」と思ってくれた方は、このブログ記事にリンクくれたり、コメントくれたり、SNSでシェアしてくれたりするととても喜びます。

株価を自動取得するスプレッドシート

方法とかどうでもいいから実物データ見せてくれ、という人の為に、まずスプレッドシートを公開したいと思います。

いろんな都合で閲覧のみ可能です。

セルに入ってる関数はコピーできるので、参考にしながら自分で作っていただければなーと思います。

株価取得スプレッドシートサンプル




↑クリックで別窓で拡大。

スプレッドシートおよび関数の解説

タイトルが赤色背景の列の「証券コード」「平均取得価額」「保有株数」が手入力が必要な部分です。

ご自身の値を入れましょう。

すると、自動的に背景青色の項目の部分がウェブから取得されます。

背景黄色の項目は便利かなと思って単純にセルを参照して計算させているだけなので、必要無い方は削除してご利用ください。

株価を自動取得するコード(関数)の解説

では、ここからは何をやっているかを簡単に説明してみます。

なお、私も職業プログラマーでは無いので、割と動いたから良いやで使ってる部分はありますので、その辺はご了承ください。

Yahoo Financeからの取得

=ImportXML(CONCATENATE("http://stocks.finance.yahoo.co.jp/stocks/detail/?code=",A6),"//td[@class='stoksPrice']")

↑コピペ用

=ImportXML(CONCATENATE("http://stocks.finance.yahoo.co.jp/stocks/detail/?code=",A6),"//td[@class='stoksPrice']")
上記ですが、まず前半のオレンジ色ところには取得したいウェブページのURLが入ります。

yahooファインナンスでは、code=の後に、証券コードを足す事で各銘柄のページが生成されているようです。

ですので、スプレッドシートサンプルではA列に証券コードをいれて、URLをくっつけるような作りにしています。

今回サンプルではA6を記載。

これで、http://stocks.finance.yahoo.co.jp/stocks/detail/?code=9432のページが取得できます。

後半の緑色の部分は、該当のURLの中の取得したい部分を表します。

ソースコード中のtdでclass名にstoksPriceとついたものを取得してね、という意味になります(Yahoo finance、stoksという謎な綴りにするの紛らわしいからやめてほしい...)。

基本、上記みたいな感じで各セル自動取得(スクレイピング)してきてます。

コードはスプレッドシートの各セルを参考にしてください。

なお、yahoo financeからうまくとれないのは、kabutanからとってきたりしており、そちらは下記で説明します。

株探(kabutan)からの取得

PERなどは株探からとってきています。参考に1つ解説します。

=IMPORTXML(CONCATENATE("http://kabutan.jp/stock/?code=",A6),"//*[@id='stockinfo_i3']/table/tbody/tr/td[1]/text()")

↑コピペ用

=IMPORTXML(CONCATENATE("http://kabutan.jp/stock/?code=",A6),"//*[@id='stockinfo_i3']/table/tbody/tr/td[1]/text()")")
前半はyahooファイナンスと同じです。URLが株探になっているだけです。

後半を株探の仕様にしています。

さいごに

自分はサンプルのスプレッドシートから結構自分用に改造して使っていますが、結構満足しています。

ただ、基本スクレイピングですので、取得先サイトの構造が変わるとこちらの関数も修正しないといけません。

しかし、そうそうサイトが変わる事も無いと思うので、それまではこちらの方法でいこうかなと思います。

あと、あまりに取得数が多すぎるとエラー吐きます(多分スプレッドシートの仕様)。

次はGoogle Apps Scriptでなんか作ってみるかなー。

もし質問などございましたら@investor_Y2にtwitterでReplyしていただくか、この記事のコメント欄にでも書いていただければなと思います。

追記

Yahooファイナンスはスクレイピングを禁止しているようです。

参考Yahoo!ファイナンス掲載情報の自動取得(スクレイピング)は禁止しています

-調査&まとめ

Copyright© Y2の株式投資ブログ , 2020 All Rights Reserved Powered by AFFINGER5.