Google Finance から日本株の証券情報を取得する

GoogleスプレッドシートのGOOGLEFINANCE関数は、[Google Finance](https://www.google.com/finance/) から「**米国株**」の証券情報を取得可能です。

https://support.google.com/docs/answer/3093281?hl=ja

しかしながら、現状では「**日本株**」の証券情報は取得できません。
[Google Finance](https://www.google.com/finance/)上に日本株の情報自体はあるのに・・・。非常に残念です。

他サイトから日本株の証券情報を取得しても良いのですが、敢えて[Google Finance](https://www.google.com/finance/)から証券情報を取得してみます。
今回は「(8591)オリックス」の現在株価を取得してみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2377902/df80331e-4061-db94-7be7-beec89705370.png)

# IMPORTXML関数
IMPORTXML関数を使用して[Google Finance](https://www.google.com/finance/)から証券情報を取得します。

https://support.google.com/docs/answer/3093342?hl=ja&ref_topic=9199554

> 構文
> IMPORTXML(URL, XPath クエリ)

## 第一引数 - URL
> ・URL - 検証するページの URL です。プロトコル（http:// など）も含めます。
> 　・URL の値は二重引用符で囲むか、適切なテキストを含むセルへの参照にする必要があります。

第一引数のURLには、オリックスの証券情報のURLを指定します。
https://www.google.com/finance/quote/8591:TYO?hl=ja

* URL末尾に証券コードが埋め込まれています。
* 日本株の場合、":TYO"の部分は固定のようです。
* "?hl=ja"で日本語サイトになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2377902/e51484f4-928d-3845-521a-fb1a0db4fbd3.png)

## 第二引数 - XPath クエリ
> ・XPath クエリ - 構造化データで実行する XPath クエリです。
> 　・XPath について詳しくは、http://www.w3schools.com/xml/xpath_intro.asp （英語）をご覧ください。

ブラウザから対象URLにアクセスして、第二引数のXPathを確認します。
今回はGoogle ChromeでXPathを確認してみます。

**1. 開発ツールを表示する**
"F12"キーを押して開発ツール(Chrome DevTools)を開きます。
（ブラウザ画面上の何も無いところを右クリックして"検証"を選択しても大丈夫です。）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2377902/48592139-4c05-c707-c7e4-261fb755c076.png)

**2. Webサイトのソースから、現在株価の位置を確認する**
現在株価にマウスカーソルを合わせて右クリックして"検証"を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2377902/ec9bb15d-2d04-d984-941c-0d909b425d74.png)

すると、開発ツール側のWebサイトのソースがハイライトされます。
これが現在株価の位置になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2377902/01095e9d-636d-85e0-0542-f763024fcdb9.png)

**3. 現在株価のXPathを確認する**
ハイライトされた部分を右クリックして Copy -> Copy XPath の順に選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2377902/72d498d9-03e5-18f2-e696-f86e18bf30b9.png)

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

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

【参考】
[グーグルスプレッドシートの関数で『ダブルクォーテーション（”）』を文字列として認識させる方法](https://qiita.com/tamaki_ikamat/items/bcf28b195e3f8546b6e1)

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

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

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

エラーになりました。
自分なりに調べてみましたが、エラーになる原因は特定できず・・・。
（XPathが深すぎて正しく認識できないのかな？）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2377902/8ee9f5a5-6fc4-91ef-e60b-ba8ba6f6d69f.png)

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

```html
<div class="YMlKec fxKbKc">¥2,448.50</div>
```
となっているので、第二引数のXPathを<code>//\*[@class=""YMlKec fxKbKc""]</code>に置き換えます。
※ダブルクォーテーションを2つ続けることを忘れずに。
<code>=IMPORTXML("https://www.google.com/finance/quote/8591:TYO?hl=ja","//*[@class=""YMlKec fxKbKc""]")</code>
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2377902/945de7f8-bd72-f456-41f4-6f08583a6632.png)

これで[Google Finance](https://www.google.com/finance/)からオリックスの株価を取得できました。

# 関連記事
* [Googleスプレッドシートで米国株の株価を取得する](https://qiita.com/WhimsicalTheo/items/6811bd81ab4e814c8d1f)
* [Googleスプレッドシートで日本株の株価を取得する](https://qiita.com/WhimsicalTheo/items/9e5043f0dd224c1ca652)

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