Data z Yahoo pomocí vlastní funkce

V minulém příspěvku jsem ukázal jak stahovat data pomocí funkcí co nabízí google tabulky a teď je na řadě „vlastní funkce“. Funkce bude stahovat data jen z YahooFinance, ale podobně to lze udělat prakticky pro každý zdroj. Funcke jsou psány v APPS Script a v sešitu jsou snad i rozumně popsány.

Zatím jde o extra sešit, který si můžete zkopírovat a využívat kód jak chcete. Nejde o doplněk, který se bude po vytvoření kopie aktualizovat(aktualizace kódu).

Úplně na konci máte „návod“ jak si funkce zkopírovat do svých sešitů. A kdo se nebojí, může se v nic pohrabat.

Vytvořil jsem sešit co obsahuje několik funkcí a postupů jak data získávat. Každá funkce má nápovědu a já zde budu hodně z těchto nápověd opisovat.

První list obsahuje ukázku na dvě funkce YAHOOFINANCE_CENA a YAHOOFINANCE_DIV

YAHOOFINANCE_CENA

Tato funkce požaduje jen Ticker z YahooFinance a vrací pole s Cenou a Měnou.
Příklad : =YAHOOFINANCE_CENA(„AAPL“)

Výsledek se ale vypisuje do jednoho sloupce a pokud je tedy chtěné(nejspíš ano) mít hodnoty v řádku je třeba použít ještě funkci TRANSPOSE =TRANSPOSE(YAHOOFINANCE_CENA(„AAPL“))

Pokud bude potřeba jen jedna hodnota použije se funkce INDEX, která vrátí jen jednu hodnotu.
Cena =INDEX(YAHOOFINANCE_CENA(„AAPL“);1;1)
Měna =INDEX(YAHOOFINANCE_CENA(„AAPL“);2;1)

YAHOOFINANCE_DIV

Tato funkce požaduje jen Ticker z YahooFinance a vrací pole s DIV, datem výplaty a Měnou.
Příklad : =YAHOOFINANCE_DIV(„AAPL“)

Výsledek je též ve sloupci jako YAHOOFINANCE_CENA

Pokud bude potřeba jen jedna hodnota použije se funkce INDEX, která vrátí jen jednu hodnotu.
DIV=INDEX(YAHOOFINANCE_DIV(„AAPL“);1;1)
Datum=INDEX(YAHOOFINANCE_DIV(„AAPL“);2;1)
Měna =INDEX(YAHOOFINANCE_DIV(„AAPL“);3;1)

Pomůcky

Ještě jsem zde popsal jak postupovat při aktualizaci dat postupně po dokončení předešlého a jak si aktualizaci vynutit zaškrtnutím jedné buňky. Toto se hodím pokud nechcete aby se vám hodnoty měnily pod rukama a nebo pokud se požadovaná hodnota nemění moc často. Třeba u DIV je asi zbytečné aktualizovat nějak často a stačí jednot za x dní/týdnů.

Druhý list obsahuje ukázku na funkci YAHOOFINANCE

Tato funkce dokáže vypsat více hodnot než předešlé dvě, ale je o něco málo složitější ji plnit.

Funkce požaduje kromě Tickeru ještě název hodnot, které má vracet a tabulku ze které je vracet. Seznam hodnot může být více a stačí je oddělit čárkou. Ale vždy jde o hodnoty z jedné tabulk. Seznam tabulek a hodnot je na listě též
Příklad:
=YAHOOFINANCE(„AAPL“;(„dividendRate,exDividendDate“);“summaryDetail“)

Opět se vrací výsledky ve sloupci a je třeba využít Transponse.
Též lze využít i Indexu.

Třetí list je ukázkou funkce getJsonValue

Tato funkce vrátí všechny hodnoty pro daný ticker a tabulku.

Příklad =getJsonValue(„AAPL“;“summaryDetail“)

Poslední dva listy ukazují jak pracovat s funkcí myGetContentText

Jde o jednoduchou funkci co se jen webu zeptá na stránku a vypíše výsledek. Ale narozdíl od IMPORTHTML A IMPORTMXL ho nerozhodí skripty na stránce. Pokud tedy něco nejde stáhnout pomocí těchto dvou GOOGLE funkcí zkuste tuto.

Pozor, pokud chcete informace o S&P 500 Yahoo má zkratku ^GSPC , ale když se kouknete nahoru do linku je cesta https://finance.yahoo.com/quote/%5EGSPC a zde je taková malá past. V adrese nesmí být znak ^ a stejně ani v dotazu být nesmí (i když bych to mohl v kódu ošetřit, ale tak jak je je snadnější na pochopení) a tak místo tohoto znaku dávejte %5E. Podobných zakázaných znaků je více, třeba = atd…, ale vždy se stačí kouknout do linku a bude jasné co tam vložit.

Jak si ty funkce zkopírovat do svého listu?

Není to žádná věda. Naklikejte si Nástroje -> Editor skriptu a najděte si v části Soubory požadovaný soubor(je v něm více jak jedna funkce). Obsah tohoto souboru si zkopírujte (klik kamkoli do obsahu Ctrl+A a Ctrl+C). Pak uděláte to samé ve svém sešitě a tam bude default jeden soubor Kód.gs(či nějak podobně pojmenovaný) a ten obsahuje jednu prázdnou funkci (function myFunction() {), do funkce klikněte a buď ji smažte a nebo pomocí Ctrl+A označte celou a pak stačí Ctrl+V a máte zde zkopírovaný obsah. Teď již jsou funkce na místě ale ještě nejdou používat. U názvu Kód.gs(který lze přejmenovat pomocí 3 teček co jsou u něj) svítí červené kolečko(značí že se v souboru něco upravovalo a ještě nebylo uloženo). A teď už jen stačí kliknout na disketku (Uložit projekt) a máte hotovo. Pokud zadáte kdekoli v sešitu =YAHOO tak se nabídne nová funkce i s popisem. Kdo to zvládl gratuluji, máte vlastní funkce a můžete si hrát v Apps Script.

Napsat komentář

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