Pár příkladů jak získat pomocí vzorců informace o Akciích/ETF či Kryptoměnách pro Vaše sešity.
Pokud máte vzorce v češtině tak je oddělovač čárka a ne středník jako v těchto příkladech. POZOR NA TO.
Yahoo finance
Cena
IMPORTXML
=
SUBSTITUTE(
IMPORTXML("https://finance.yahoo.com/quote/ABBV";"//*[@id='quote-header-info']/div[3]/div[1]/div/span[1]")
;".";",")*1
Dividenda
IMPORTHTML
=
INDEX(
SPLIT(
SUBSTITUTE(
IMPORTXML("https://finance.yahoo.com/quote/ABBV?p=ABBV";"//*[@id='quote-summary']/div[2]/table/tbody/tr[6]/td[2]")
;".";",")
;" ";FALSE;TRUE)
;1,1)
IMPORTHTML
=
INDEX(
SPLIT(
SUBSTITUTE(
INDEX(
IMPORTHTML("https://finance.yahoo.com/quote/ABBV";"table";2)
;6;2)
;".";",")
;" ";FALSE;TRUE)
;1,1)
Pay date
IMPORTXML
=
IMPORTXML(
"https://finance.yahoo.com/quote/ABBV";
"//*[@id='quote-summary']/div[2]/table/tbody/tr[7]/td[2]/span"
)
IMPORTHTML
=
INDEX(
IMPORTHTML("https://finance.yahoo.com/quote/ABBV"; "table"; 2)
;7;2)
V obou případech https://finance.yahoo.com/quote/ABBV je přímo link yahoo finance, kde danou akci naleznete. Můžete napsat i včetně hodnoty za ? https://finance.yahoo.com/quote/ABBV/key-statistics?p=ABBV
Na získávání dat pomocí Apps Script(makra) je tu článek s připraveným sešitem.
Ebig.cz/api/
Cena
Zajímavá stránka nabízející API z české burzy. API je popsáno přímo na webu i s tickery. Stačí jen měnit tickery.
=
SUBSTITUTE(
SUBSTITUTE(
VLOOKUP("currentPrice"&"*";TRANSPOSE(IMPORTDATA("https://ebig.cz/api/v1/?ticker=MONET.PR"));1;false)
;"currentPrice:";"")
;".";",")*1
FIO.CZ
Cena
=IMPORTXML("https://www.fio.cz/zpravodajstvi/akcie-stocklist/11392-cez";"//*[@id='content']/div[2]/div/div[1]/p[1]/big")*1
Pokud chcete jinou akcii, stačí změnit „https://www.fio.cz/zpravodajstvi/akcie-stocklist/11392-cez“ na stránku s jinou akcií. Pro Monetu na příklad “ https://www.fio.cz/zpravodajstvi/akcie-stocklist/81315-moneta-money-bank„.
AKCIE.CZ
Cena
opět ČEZ
BCPP
=
Index(
Split(
Index(
Importhtml("https://www.akcie.cz/kurzy-cz/akcie-11392-cez/";"TABLE";1);2;2);"
")
;1
;1)*1
RMS
=
Index(
Split(
Index(
Importhtml("https://www.akcie.cz/kurzy-cz/akcie-11392-cez/";"TABLE";1);2;3);"
")
;1
;1)*1
Pro jiné akcie stačí nahradit link „https://www.akcie.cz/kurzy-cz/akcie-11392-cez/“ za jiný link, například pro Monetu je „https://www.akcie.cz/kurzy-cz/akcie-81315-moneta-money-bank/„.
Kryptoměny
Google finance zná pár kryptoměn, ale i když je zná je sestavení dotazu jiné než pro Akcie a tak se musí vždy prát do vlastní ceny.
Googlefinance funkce
Lze použít pro pár krypto. Pro ostatní je třeba si najít web či službu a dotahovat to zní viz odkaz níže.
=GoogleFinance("CURRENCY:BTCEUR")
Použitelné pro
BCH Bitcoin Cash
BTC Bitcoin
ETH Ethereum
LTC Litecoin
Coinmarketcap.com
=
SUBSTITUTE(
SUBSTITUTE(
IMPORTXML("https://coinmarketcap.com/currencies/monero/";"//*[@id='__next']/div/div[2]/div/div[1]/div[2]/div[2]/div[1]/div") ;
".";",") ;
"$";"") *1
Opět lze kód „https://coinmarketcap.com/currencies/monero/“ nahradit jiným a pokud bude zde vždy u USD, tak pokud chcete jinou měnu, musíte ještě výsledek dotazu násobit převodem měny.
Příklad cena Monrea u EUR
=
SUBSTITUTE(
SUBSTITUTE(
IMPORTXML("https://coinmarketcap.com/currencies/monero/";"//*[@id='__next']/div/div[2]/div/div[1]/div[2]/div[2]/div[1]/div")
;".";",")
;"$";"")
*
GoogleFinance("CURRENCY:USDEUR")
Api.coinmarketcap.com
Lze využít i API.
=
REGEXEXTRACT(
SUBSTITUTE(
SUBSTITUTE(
VLOOKUP("*"&"price"&"*";TRANSPOSE(IMPORTDATA(
"https://pro-api.coinmarketcap.com/v1/cryptocurrency/quotes/latest?symbol="&Krypto&"&convert="&Mena&"&CMC_PRO_API_KEY=sem_dej_api_klic"
));1;false)
;"currentPrice:";"")
;".";",")
;"\d{1,12}.\d{0,12}")*1
&Krypto&=Zkratka kryptoměny – například BTC
&Mena&=Zkratka měny – například USD, EUR
sem_dej_api_klic = vygenerovaný API klíč (zaregistrovat se->mejlem ověřit účet->a zobrazit si klíč
Cryptocompare.com
Tenhle zdroj nějaký čas funguje bez parametru api_key v URL(jen pár načtení za den), na pár dat to stačí ale je lepší si klíč sehnat. Stačí se zdarma zaregistrovat na cryptocompare.com a vygenerovat si vlastní klíč, pak vložit na místo sem_dej_api_klic
=
SUBSTITUTE(
REGEXEXTRACT(
IMPORTDATA("http://min-api.cryptocompare.com/data/price?fsym="&Krypto&"&tsyms="&Mena&"&api_key=sem_dej_api_klic")
; "\d{1,12}.\d{0,12}")
;".";",")*1
Verze bez api_key asi jen na vyzkoušení, bez api_key se to moc používat nedá
=
SUBSTITUTE(
REGEXEXTRACT(
IMPORTDATA("http://min-api.cryptocompare.com/data/price?fsym="&Krypto&"&tsyms="&Mena)
; "\d{1,12}.\d{0,12}")
;".";",")*1
&Krypto&=Zkratka kryptoměny – například BTC
&Mena&=Zkratka měny – například USD, EUR
sem_dej_api_klic = vygenerovaný API klíč (zaregistrovat se->mejlem ověřit účet->na webu na záložce{API} kliknout na Documentacion, kliknout na Get a free key
hodnoty co jdou vložit jako cíle na nějaké buňky jsem dal do &
Coinbase.com
Lze si dotáhnout i ceny z Coinbase:
=
SUBSTITUTE(
REGEXEXTRACT(
INDEX(
IMPORTDATA("https://api.coinbase.com/v2/prices/BTC-USD/spot")
;1;3)
;"\d{1,12}.\d{0,12}")
;".";",")
*1
Zde lze měnit jak krytpto, tak i měnu viz část :BTC-USD , lze BTC-EUR či jiné kombinace
Ahoj,
super funkce, ale nevím jak pracovat s tickerem který obsahuje v názvu tečku.
Např. BMW3.DE nebo KOMB.PR
Ceny takových akcií nejsem schopen načíst.
díky
Ahoj,
popravdě nevím proč to nejde. Dříve to fungovalo a je mi záhadou proč to teď nejde (jako by se z dotazu nevracela žádná hodnota). Buď jde o chybu a Yahoo to zase zprovozní a nebo je to jejich boj proti takovémuto stahování dat.
Tak nakonec cesta bude přes AppScript v GoogleSheet. Použitím metod UrlFetchApp a str.Match. Ještě mi to nefunguje, ale vidím světlo na konci tunelu.
https://docs.google.com/spreadsheets/d/1X1G7_NNeDQZdJgLO5AxBp4SoyHZo-V3F_wWOkYR9ZaM/copy?usp=sharing
tady jsem to nějak narychlo spáchal. Využíván „API“ Yahoo Finance a co jsem koukal ceny vrací OK. Zatím je tam jen link na cenu, ale dá se toho takto tahat více. Ještě jsem to celé neprozkoumal. Moje funkce se jmenuje myGetContentText
Ale toto si asi zaslouží svůj článek až to prozkoumám víc do podrobna:)
trochu jsem to poupravil, aby stacilo volat jen funkci v buňce =PriceCurrent(„KOMB.PR“)
do apps script:
function PriceCurrent(ticker)
{
var url = ‚https://query2.finance.yahoo.com/v10/finance/quoteSummary/’+ticker+‘?modules=price‘;
var stock = UrlFetchApp.fetch(url,).getContentText();
var vysl = stock.search(/“regularMarketPrice“:{„raw“:/g);
stock = stock.substring(vysl+28,vysl+50);
vysl = stock.search(/,“fmt“/g);
stock = stock.substring(0,vysl);
return Number(stock);
}
Taky jsem potunil tabulku výše. Mám teď jednu funkci na cenu a měnu. A druhou co vrací DIV, exdivdate a měnu.
Ušetří to dotazy, pokud chceš dotahovat více než jednu hodnotu použiješ transponse. Pokud jen jednu použiješ funkci index.
Ještě jsem tam přidal kontrolu na nevalidní hodnoty a pak vracím NaN, ať to má jednotný formát.
Dobry den,
dakujem za clanok, ale jedna funkcia nefunguje, neviete preco?
=
INDEX(
SPLIT(
SUBSTITUTE(
INDEX(
IMPORTXML(„https://finance.yahoo.com/quote/ABBV?p=ABBV“;“//*[@id=’quote-summary‘]/div[2]/table/tbody/tr[6]/td[2]“)
;6;2)
;“.“;“,“)
;“ „;FALSE;TRUE)
;1,1)
V článku jsem upravil vzorec a již by mělo být OK.