
少し前に、仮想通貨の現在価格をAPIで取得しようという記事を書きました。こちらの記事では、Google スプレッドシートで仮想通貨の現在価格を取得する関数を紹介しました。
これで、海外ETF (GOOGLEFINANCE 関数) と仮想通貨 (上の記事で紹介した関数) の現在価格は取得できるようになりました。しかし、まだ国内ETFと投資信託については解説をしていなかったので、紹介したいと思います。
仮想通貨の現在価格を取得するより簡単で、スクレイピングをすれば達成できます。
1. IMPORTXML 関数を使う
Google スプレッドシートには、IMPORTXMLという関数があります。ウェブサイトのURLと、そのウェブサイト内の取得したい要素へのXPathを指定することで、その要素の値を手に入れることができます。
使い方は以下の通りです。(https://support.google.com/docs/answer/3093342?hl=en より)
Syntax
IMPORTXML(url, xpath_query)
url
– The URL of the page to examine, including protocol (e.g.http://
).- The value for url must either be enclosed in quotation marks or be a reference to a cell containing the appropriate text.
xpath_query
– The XPath query to run on the structured data.- For more information on XPath, see http://www.w3schools.com/xml/xpath_intro.asp.
url
はhttp, httpsなどのプロトコルを含む必要があります。
2. 使ってみよう
まずは、欲しい情報があるウェブサイトを探します。ここでは、例として国内ETFである純プラチナ上場信託 [1541] の現在価格が欲しいとします。
1541の価格が載っているウェブサイトを探します。いくつかありますが、以下のウェブサイトにします。
株探 https://kabutan.jp/stock/chart?code=1541
つぎは、現在価格へのXPathを手に入れます。自分はChromeを使っているので、Chromeの場合の操作を示しますが、他のブラウザでも同じ機能があると思います。
↓現在価格の部分を右クリックし、[検証] をクリックします。

↓画面左側にデベロッパーツールが表示されます。現在価格が記載されているところを右クリックし、[Copy XPath]を選択します。

以下のような文字列がコピーされます。ウェブサイトの構造が変わればXPathの値も変わるので、必ずしも一致しません。
//*[@id=”stockinfo_i1″]/div[2]/span[2]
さて、これでURLとXPathが手に入ったので、IMPORTXML関数に突っ込んでみます。URLとXPathはダブルクォーテーションで囲みます。

これで行けるかと思いきや、このままだとエラーが出ます。これは、XPathの中にダブルクォーテーションが含まれているため、XPathを正しく指定できていないからです。stockinfo_i1が、ダブルクォーテーションで囲まれていますね。
“stockinfo_i1” (ダブルクォーテーション) を ‘stockinfo_i1’ (シングルクオーテーション) に変更します。

これで現在価格が取得できます。投資信託についても同様の手順で価格を取得することができます。
3. より良いXPathを探す
先ほど取得した現在価格には、”円”の文字が入っています。円が付いていると、数値ではないので計算に使えないという使いにくさがあります。
これはXPathで指定した値に円も含まれているからであって、XPathを変えない限りどうしようもありません。(Googleスプレッドシートの関数を使えば文字列は編集できるので、おそらく数値にできると思いますが。)
こういう場合は、値が数値となっているXPathを探してみると良いでしょう。
↓さきほどの株探のウェブサイトだと、現在価格が書いてある部分のすぐ下に、[基本情報] というタブがあるのでそこをクリックします。すると、画面左側に終値が表示されます。円などの文字が入っていないので、使いやすそうなことが分かります。

終値の値を右クリックし、XPathをコピーします。
↓このXPathを用いてIMPORTXMLを使うと、以下のようになります。

この現在価格は数値として扱えるため、例えば自分が保有してる株数を別なセルに記入しておけば、保有銘柄の現在価値を知るために 株数 × 単価 (現在価格) というような計算が行えます。
まとめ
この記事では、IMPORTXML関数を用いた株価の取得について解説しました。
仮想通貨の現在価格をAPIで取得しようで紹介したCoinMarketCapのAPIを加えると、各投資対象の現在価格は以下のように取得できることが分かりました。
- 海外ETF: Googleスプレッドシートに組み込まれているGOOGLEFINANCE関数を使う。
- 仮想通貨: CoinMarketCapのAPIを使う。スクレイピングでもできるが、APIのほうが情報が多く使いやすい。
- 国内ETF: IMPORTXMLによるスクレイピング。
- 投資信託: IMPORTXMLによるスクレイピング。
- その他: APIがあれば嬉しい。なければスクレイピングでなんとかする。
一般に流通してるETFや投資信託、仮想通貨が対象の場合、これですべてカバーできると思います。
皆さんの資産管理に役立つことを願っています。ありがとうございました。