Jak Pobrać Aktualną Cenę TFI w Google Sheets

TFI w ramach IKE/IKZE to popularny sposób inwestowania. Stwierdziłem, że skoro chcę mieć w swoim arkuszu szybki podgląd na stan inwestycji, to warto, żeby i moje TFI się tam znalazły (mimo, że kwoty są niewielkie). Nie chcę jednak za każdym razem wchodzić na stronę NN TFI i spisywać aktualnych cen.
Na początek zaznaczę, że opisywana tutaj funkcja do Arkuszy Google to jedna z kilku, które znacznie ułatwiają używanie Arkuszy, jako narzędzia do monitorowania finansów. Jeśli chciałbyś je wykorzystać, żeby usprawnić swój arkusz, zajrzyj do wpisu Google Sheets #3: Jak Używać Funkcji – Thesaurus
A teraz do rzeczy!
Ceny funduszy NN TFI w jednym miejscu
Napisałem funkcję NN_FUND_PRICE
, żeby nie musieć wchodzić na stronę notować za każdym razem, gdy chcę sprawdzić wartość środków w ramach IKE/IKZE w NN TFI.
Jak jej użyć?
Potrzebujesz dwóch zmiennych – kategorii i nazwy funduszu. Wejdź na stronę z notowaniami interesującego funduszu i skopiuj je z adresu URL np.:
https://www.nntfi.pl/fundusze-inwestycyjne/fundusze-obligacji/nn-obligacji?unitsCategoryId=K
Zaznaczyłem na zielono kategorię funduszu, a na niebiesko nazwę.
Podaj kategorię jako pierwszy argument, a nazwę jako drugi
=NN_FUND_PRICE("fundusze-obligacji"; "nn-obligacji")
Szczegóły techniczne
Jeśli nie czujesz JS-a, parsowania HTML-a regexem lub nie interesują Cię szczegół techniczne, to możesz spokojnie pominąć tę część.
Pierwsze podejście – API
W dobrej wierze i zakładając, że IT mocno weszło w świat finansów, zacząłem od szukania API – najpierw udostępnionego przez NN TFI, a potem jakiegokolwiek innego, gdzie podaję jakiś indywidualny identyfikator fundusz i dostaję jego ceną – tak, jak można to zrobić np. z kryptowalutami. Niestety, zawiodłem się. Gdybyś Ty natrafił na tego typu API, to będę bardzo wdzięczny, jeśli podzielisz się informacją w komentarzu.
Proste podejście – HTML
Skazano mnie na wyciąganie ceny funduszu z HTML-a. Pomyślałem przez chwilę o parsowaniu go Regexem, ale mam do tego dziwną awersję

Do prostego wyciągnięcia jednego stringa z HTML-a wystarczą proste operacje na stringach. Podobno jak coś jest głupie, ale działa, to nie jest głupie.
const pattern = '<div class="end_date_price"><span class="fund_value">' const startIndex = result.lastIndexOf(pattern) + pattern.length
const newString = result.substring(startIndex)
const endIndex = newString.indexOf(' <')
const priceString = newString.substr(0, endIndex).replace(',', '.')
const price = parseFloat(priceString)
Cały kod tej i pozostałych funkcji znajdziesz, jak zawsze, na moim GitHubie.
Jeśli widzisz, co można by usprawnić albo co byłoby przydatnej w tej lub podobnej funkcji, daj znać w komentarzu!
1 komentarz