Google Tabulky Akcie-Krypto

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(
   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)

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

Komentáře: 6

  1. 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

    1. 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.

  2. 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.

  3. 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);
    }

    1. 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.

Napsat komentář: Martin Zrušit odpověď na komentář

Vaše e-mailová adresa nebude zveřejněna.