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

  • このエントリーをはてなブックマークに追加
  • Pocket
  • LINEで送る

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

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

自分がまさにそれだったので、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!ファイナンス掲載情報の自動取得(スクレイピング)は禁止しています

やっぱり単純に複数口座合わせた成績知りたいとかなら、マイトレードで良さそうですね。

SNSでもご購読できます。

コメント

  1. ヤマ より:

    もしよければKINGSOFTのWPSSpreadsheetsで自動取得できるやつを作ってもらうことは出来ますか?

    1. @investor_y2 より:

      ちらっと調べてみたところ、VBAベースのようで、Googleのスプレッドシートとはまたちょっと違うので、私が作るのは難しそうです。

      どちらかというと、MicroSoftのエクセルに近そうですので、下記の楽天RSSのようなものを活用すればできるのかもしれないですね。

      https://www.rakuten-sec.co.jp/MarketSpeed/onLineHelp/msman1_11_1.html

      どちらにせよ、自分はちょっと難しそうです。

  2. ゆゆゆ より:

    こちらのサイトのコードを利用させて頂いて、株式や投資信託の値をヤフーファイナンスから取得していたのですが、7月ごろから取得できなくなりました。
    @investor_y2様は問題なく取得できていますか?

    1. @investor_y2 より:

      Yahooファイナンスが禁止しているので現在はやってませんが、このコードで取得できるのではないかなと思います。

  3. 匿名 より:

    初めまして。
    グーグルアップスクリプトで上記のような表を作るとこはできますか?
    株価コードを入力すると株探から株価をスクレイピングして持ってこれるような

    1. @investor_y2 より:

      GASはちょっとしか触ったことないですし、自分で実装してないのでちゃんとしたところはわかりませんが、株価を持ってくることは可能だとは思いますね。

コメントを残す


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください