Googleスプレッドシートで日本株の配当利回りを取得する


GoogleスプレッドシートのIMPORTXML関数を使ってGoogle Financeから日本株の配当利回りを取得します。
今回は[2914]日本たばこ産業(JT)の配当利回りを取得してみます。

IMPORTXML関数について

IMPORTXML関数の詳細は過去の記事をご参照頂ければ幸いです。
Google Finance から日本株の証券情報を取得する

IMPORTXML関数の引数

IMPORTXML関数の引数に指定する URL と XPath を確認します。

URL

[2914]日本たばこ産業(JT)の証券情報は以下URLで確認できます。
https://www.google.com/finance/quote/2914:TYO?hl=ja

XPath

ブラウザから対象URLにアクセスして配当利回りのXPathを確認します。
今回もGoogle ChromeでXPathを確認してみます。

1. 開発ツールを表示する
"F12"キーを押して開発ツール(Chrome DevTools)を開きます。
(ブラウザ画面上の何も無いところを右クリックして"検証"を選択しても大丈夫です。)

2. Webサイトのソースから、配当利回りの位置を確認する
配当利回りにマウスカーソルを合わせて右クリックして"検証"を選択します。

すると、開発ツール側のWebサイトのソースがハイライトされます。
これが配当利回りの位置になります。

3. 配当利回りのXPathを確認する
ハイライトされた部分を右クリックして Copy -> Copy XPath の順に選択します。

クリップボードにXPathがコピーされたので、一旦テキストファイル等にXPathを貼り付けてみます。
//*[@id="yDmH0d"]/c-wiz/div/div[4]/div/div/main/div[2]/div[2]/div[7]/div

先頭の//*[@id="yDmH0d"]に含まれるダブルクォーテーションは、IMPORTXML関数に入れる際には文字列として認識させる必要があるため、ダブルクォーテーションを2つ続けて入力します。
//*[@id="yDmH0d"]
    ↓
//*[@id=""yDmH0d""]

【参考】
グーグルスプレッドシートの関数で『ダブルクォーテーション(”)』を文字列として認識させる方法

IMPORTXML関数の引数を整理すると以下の通りになります。

引数
第一引数 - URL "https://www.google.com/finance/quote/2914:TYO?hl=ja"
第二引数 - XPath クエリ "//*[@id=""yDmH0d""]/c-wiz/div/div[4]/div/div/main/div[2]/div[2]/div[7]/div"

スプレッドシートにIMPORTXML関数を入力

IMPORTXML関数に引数を指定してスプレッドシートに入力します。
=IMPORTXML("https://www.google.com/finance/quote/2914:TYO?hl=ja","//\*[@id="yDmH0d"]/c-wiz/div/div[4]/div/div/main/div[2]/div[2]/div[7]/div")

エラーになりました。
XPathが深過ぎて正しく認識できないのでは?と勝手に想像しています。

エラーの解消方法

XPathを編集してエラーを解消します。
先ほどハイライトされた部分を改めて確認します。

<div class="P6K39c">6.10%</div>

となっているので、第二引数のXPathを//*[@class=""P6K39c""]に置き換えます。
=IMPORTXML("https://www.google.com/finance/quote/2914:TYO?hl=ja","//\*[@class=""P6K39c""]")

エラーは解消しましたが、配当利回りは取得できていません。
//*[@class=""P6K39c""]が複数あるようです。
もう少し上の階層div class="eYanAe"から見ていきます。

XPathを書き出してみます。

<div class="eYanAe" role="region" aria-labelledby="key-stats-heading"> ※XPath://*[@class="eYanAe"]
    <div class="vvDK2c">...</div>        ※XPath://*[@class="eYanAe"]/div[1]
    <div class="gyFHrc">...</div>        ※XPath://*[@class="eYanAe"]/div[2]
    <div class="gyFHrc">...</div>        ※XPath://*[@class="eYanAe"]/div[3]
    <div class="gyFHrc">...</div>        ※XPath://*[@class="eYanAe"]/div[4]
    <div class="gyFHrc">...</div>        ※XPath://*[@class="eYanAe"]/div[5]
    <div class="gyFHrc">...</div>        ※XPath://*[@class="eYanAe"]/div[6]
    <div class="gyFHrc">...</div>        ※XPath://*[@class="eYanAe"]/div[7]
        <div class="P6K39c">6.10%</div>  ※XPath://*[@class="eYanAe"]/div[7]/div

XPathをIMPORTXML関数に入れてみます。
※ダブルクォーテーションを2つ続けることを忘れずに。
=IMPORTXML("https://www.google.com/finance/quote/2914:TYO?hl=ja","//\*[@class=""eYanAe""]/div[7]/div")

[2914]日本たばこ産業(JT)の配当利回りを取得できました。

APPENDIX

配当金を出していない銘柄の場合、配当利回りは-と表示されます。
複数銘柄の情報を一覧表示させる場合、-ではなく0.00%とした方が都合が良い場合があるかと思います。
そういった場合、以下のようにSUBSTITUTE関数とTEXT関数も組み合わせて-0.00%に置換することができます。
=SUBSTITUTE(IMPORTXML("https://www.google.com/finance/quote/2914:TYO?hl=ja","//\*[@class=""eYanAe""]/div[7]/div"),"-",TEXT(0,"0.00%"))

以上、最後まで読んでいただき、ありがとうございました。