Google Apps ScriptでYahoo Finance APIから株価を取得してアレコレしたい！

# Yahoo Finance APIとは
Yahooが提供していた金融に関するAPI
現状公式にAPIドキュメントがない


Pythonのライブラリはいくつか見つかったが他の言語のものがあまり見当たらない
非公式のアプリがYahooFinanceAPIを使っていると書いているので多分中を見たらわかるはず…と思いきやどれもこれもエラーがあるとかなんとか



## エンドポイント 
https://query2.finance.yahoo.com/v8/finance/chart/ {symbol}


### symbol
要は銘柄コード

日本株探すなら1234.Tのように、(4桁の数字).Tにしておけばよい


その他period,intervalなどのパラメータの情報を得て一旦満足…したかに思えた


## 決算の情報が出てこない
有名どころのライブラリを見た感じ、
かっては決算情報、配当、株式分割の情報まで得られたらしい
今は決算情報が取れないという話だったので調べてみたところ、以下の記事に当たる


[Yahoo Finaceからのデータの取得と分析](https://datapowernow.hatenablog.com/entry/2023/04/28/154409)

これならできるらしい…ということで[ソース](https://github.com/dpguthrie/yahooquery/blob/master/yahooquery/base.py)を確認


<details><summary>ソースの一部</summary>

```python:base.py
"chart": {
            "path": "https://query2.finance.yahoo.com/v8/finance/chart/{symbol}",
            "response_field": "chart",
            "query": {
                "period1": {"required": False, "default": None},
                "period2": {"required": False, "default": None},
                "interval": {
                    "required": False,
                    "default": None,
                    "options": [
                        "1m",
                        "2m",
                        "5m",
                        "15m",
                        "30m",
                        "60m",
                        "90m",
                        "1h",
                        "1d",
                        "5d",
                        "1wk",
                        "1mo",
                        "3mo",
                    ],
                },
                "range": {
                    "required": False,
                    "default": None,
                    "options": [
                        "1d",
                        "5d",
                        "7d",
                        "60d",
                        "1mo",
                        "3mo",
                        "6mo",
                        "1y",
                        "2y",
                        "5y",
                        "10y",
                        "ytd",
                        "max",
                    ],
                },
                "events": {"required": False, "default": "div,split"},
                "numberOfPoints": {"required": False, "default": None},
                "formatted": {"required": False, "default": False},
            },
        },
```

</details>

財務情報は株価取得とは別のAPIの機能になっているらしい
配当と株式分割の情報は今も取れる

このbase.pyに他のAPIのパラメータの情報も載っているので
自分では見つけられなかったけど海外Yahooのどっかしらにドキュメント公開されているはずでは…


他のAPIも少し触ってみたが、パラメータにcrumbというcookieの値が必要らしい
時間かかりそうだったのでいったんパス


| パラメータ | 説明 |
|:-:|:-:|
| symbol | 銘柄コード。1234.T |
| range | 現在からの取得範囲。periodと両方指定した場合rangeが優先|
| period1 | 取得開始時間。UNIXタイムスタンプ |
| period2 | 取得終了時間。UNIXタイムスタンプ |
| interval | ローソク足の太さ |
| events | 配当(div)、株式分割(split) |


この記事を書いている2023/11/29の前日に株式分割を行った森永乳業(2264)に対して
1年分、月足、株式分割と配当のデータを出すように要求すると下のようなURLになる

https://query2.finance.yahoo.com/v8/finance/chart/2264.T?range=1y&interval=1mo&events=split%7Cdiv


ここまでわかれば簡単
GASに限らずJavaでもrubyでもPHPでもいい


あとは返ってきたJSONをパースしてうんぬん
取得したデータ残したかったらスプレッドシートをテーブル代わりにするとか
ローソク足作れるライブラリ持ってきてやるとか


ここまでできたらそんな難しくないはずなのでいったんまとまった情報として公開
作れたら更新する(予定)