Yahoo! financeのAPIを叩いて、株価を入手する

https://query1.finance.yahoo.com/v8/finance/chart/●●●●.T

●●●●に株式のコード番号を入力する
トヨタ自動車であれば "7203"
.Tとは東京市場ということみたいです。

作成したURLを叩くと、文字列が生成される。
このうちの株価をGASで入手する。

function getPrice() {

var regularMarketPrice = getRegularMarketPrice();

   var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('シート1');

sheet.getRange('B1').setValues([[regularMarketPrice
['chart']['result'][0]['meta']['regularMarketPrice']]]);

}

function getRegularMarketPrice() {

var ticker = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('シート1').
getRange('B2').getValue();
var url = 'https://query1.finance.yahoo.com/v8/finance/chart/' + ticker +'.T';

var response = UrlFetchApp.fetch(url);

var json = response.getContentText();

return JSON.parse(json);

}

手こずったのが、jsonの構造について。​
8行目に出てくる、配列について戸惑った。

https://query1.finance.yahoo.com/v8/finance/chart/7203.T
を叩くと

{"chart":{"result":[{"meta":{"currency":"JPY","symbol":"7203.T","exchangeName":"JPX","instrumentType":"EQUITY","firstTradeDate":925948800,"regularMarketTime":1611641701,"gmtoffset":32400,"timezone":"JST","exchangeTimezoneName":"Asia/Tokyo","regularMarketPrice":7500.0,"chartPreviousClose":7677.0,"previousClose":7677.0,"scale":3,"priceHint":2,"currentTradingPeriod":{"pre":

と続く配列がかえって来るのだが、{で括られているところは['chart']と重ねて指定し、
次に、[で括られているのでその中の一番目ということで[0]で指定。
{で括らているので['meta']で指定し、最後に取得したいオブジェクトを指定した。

ここでは、'B2'で銘柄のコード番号を指定している。

この記事が気に入ったらサポートをしてみませんか?