なまけもの日記

人生のメモ帳

Googleスプレッドシートで自動更新される株メモを作成

GoogleスプレッドシートのIMPORTXML関数で外部Webサービスからデータを取得するのが便利です.FirefoxのアドオンのFirebugXPathを取得して,タグや階層を指定すればIMPORTXML関数で任意のデータを取り出せる.つまり,指定した株の最新の情報を自動で取得して更新してくれるメモが作成可能.

株メモ

IMPORTXML関数が興味深かったので,適当に遊んでみました.外部から好きなデータが取得できます.

対象 取得結果の例 数式 ※A2のセルに銘柄コード(例:3048)を入力
銘柄 ビックカメラ =IF(A2="","---",SUBSTITUTE(IMPORTXML(CONCATENATE("http://stocks.finance.yahoo.co.jp/stocks/history/?code=",A2),"//th[@class='symbol']"),"(株)",""))
株価 1,175 =IF(A2="","---",IMPORTXML(CONCATENATE("http://stocks.finance.yahoo.co.jp/stocks/history/?code=",A2),"//td[@class='stoksPrice']"))
単元株数 100 =IF(A2="","---",IMPORTXML(CONCATENATE("https://stocks.finance.yahoo.co.jp/stocks/detail/?code=",A2),"//div[@id='rfindex']/div[2]/div[10]/dl/dd/strong"))
決算月 8月末日 =IF(A2="","---",IMPORTXML(CONCATENATE("https://stocks.finance.yahoo.co.jp/stocks/profile/?code=",A2),"//table[@class='boardFinCom marB6']/tr[12]/td"))
配当 ○(配当がある場合○,なければ×) =IF(A2="","-",IF(ISERROR(IMPORTXML(CONCATENATE("https://stocks.finance.yahoo.co.jp/stocks/detail/?code=",A2),"//div[@id='rfindex']/div[2]/div[4]/dl/dd/strong/a")),"×","○"))
一株配当 12 =IF(A2="","---",IF(ISERROR(IMPORTXML(CONCATENATE("https://stocks.finance.yahoo.co.jp/stocks/detail/?code=",A2),"//div[@id='rfindex']/div[2]/div[4]/dl/dd/strong/a")),"---",IMPORTXML(CONCATENATE("https://stocks.finance.yahoo.co.jp/stocks/detail/?code=",A2),"//div[@id='rfindex']/div[2]/div[4]/dl/dd/strong/a")))
配当利回り 1.02 =IF(I2="---","---",IMPORTXML(CONCATENATE("https://stocks.finance.yahoo.co.jp/stocks/detail/?code=",A2),"//div[@id='rfindex']/div[2]/div[3]/dl/dd/strong"))
優待 ○(株主優待がある場合○,なければ×) =IF(A2="","-",IF(ISERROR(IMPORTXML(CONCATENATE("https://info.finance.yahoo.co.jp/stockholder/detail/?code=",A2),"//div[@class='incentiveNomatch']/p")),"○","×"))
参照URL ■(ハイパーリンク) =IF(A2="","---",HYPERLINK(CONCATENATE("https://info.finance.yahoo.co.jp/stockholder/detail/?code=",A2),"■"))

試してみたけど,結局リアルタイム性の必要ない項目が多い.本当に自動で更新したい項目のみをIMPORTXML関数で取得するようにして,他の項目は一旦取得した後にコピペで数式ではなく文字データとして残した方が使いやすそう.

関数のメモ

  • IF:銘柄コードのセルが空白の場合等に”—”と表示させるために利用
  • IMPORTXML:外部Webサービスからデータを取得
  • SUBSTITUTE:取得したデータ(文字列)から指定文字列を削除.”(株)”の表示を消したかったため利用.
  • CONCATENATE:文字列結合.指定したセルに記載した銘柄コードとIMPORTXML用のURLを結合させるために利用.
  • ISERROR:エラー判定.外部Webサービスの指定タグが存在していなかった場合(配当や優待が存在しない場合)の処理を記載するために利用.
  • HYPERLINK:ハイパーリンク参照元のURLを記載しておく際にURLをそのまま記載すると長いので適当に■にURLを割り当てるために利用.

参考

Google Docs スプレッドシートのimportXMLの使い方 – Seamonkey-Director

データを集める技術 (Informatics &IDEA)

データを集める技術 (Informatics &IDEA)