W tym poście przedstawie zagadnienie pobierania danych z zewnętrznych API do arkusza google, a także tworzenia własnych funkcji.
Czym jest API? Jest to tak zwany interfejs programistyczny aplikacji za pomocą którego, możemy komunikować się między aplikacjami.
W skrócie należy to rozumieć jako interfejs do pobierania danych z aplikacji internetowych jak np.:
bitbay.pl,
coinmarketcap.com,
facebook.com.
Jak już można się domyślić, przedstawię tutaj prosty sposób jak pobierać dane do arkusza googla. Cel jaki postawie to stworzenie wykresu średniej ceny bitcoina w całym okresie istnienia. Przykład na obrazku poniżej.
Dostawcą danych będzie api.blockchain.info, API z którego korzysta serwis blockchain.com do tworzenia swoich wykresów. Wykresy te znaleść można pod adresem: https://www.blockchain.com/pl/charts
Pierwszym krokiem jest stworzenie nowego arkusza kalkulacyjnego googla, następnym krokiem jest uruchomienie edytora skryptów (Narzędzia / Edytor skryptów).
Zanim stworzymy wyżej wymieniony wykres przedstawię kilka informacji o edytorze skryptów.
Edytor skryptów służy do pisania skryptów .gs, czyli Google Apps Script. Język ten opiera się na JavaScript 1.6 oraz posiada niektóre częsci 1.7 i 1.8, a także podzbiór interfejsu API ECMAScript 5. Rozszerza funkcjonalności Google Apps i opiera się na chmurze. Nadaje się on też jako pierwszy język do nauki programowania.
Szczegółowa dokumentacja znajduje się pod poniższym linkiem:
Kod skryptów piszemy w przeglądarce, dodatkowo firma Google dodała, także debuger za pomocą, którego możemy sprawdzać jak wykonuje się nasz kod.
Na poniższym obrazku przedstawiona jest przykładowa funkcja tłumacząca tekst z języka angielskiego na hiszpański. Wynik operacji otrzymany w debbugerze.
Napiszmy teraz coś trudniejszego, lecz bardzo przydatnego w akuszach kalukulacyjnych. Własną funkcję.
Typowa funkcja używana w arkuszu na przykładzie funkcji SUM() jest wbudowana, nasza będzie customowa.
Co zrobić jeśli potrzebujemy własną? Np. zamieniajaca znak kropki . na przecinek ,?
Poniższy kod przedstawia rozwiazanie.
Zamiany znaków dokonuje funkcja javascript .replace(). Opis funkcji javascript znajduje pod tym linkiem:
Opis
Ważnym fragmentem kodu są adnotacje znajdujące się od 7 do 11 lini kodu. Andotacja @param określa typ argumentu, tutaj ‚number’. Mogłby być także ‚string’, lecz jednak będziemy przekazywać, więc liczby funkcja powinna zwracać typ ‚number’. Tag @customFunction powoduje, że nasza funkcja pojawi się na liście funkcji wbudowanych w arkuszu.
Więcej na ten temat znajduje się pod adresem:
Funkcje
Wstęp mamy już za sobą. Wróćmy do głownego zadania jakim jest utworzenie wykresu bitcoina.
Na poczatku potrzebujemy metody API, która zwróci odpowiedni zakres danych.
Jest nią metoda GET z poniższym adresem URL:
https://api.blockchain.info/charts/market-price?cors=true&format=json&lang=pl×pan=all
Oczywiście, jeżeli ją wywołamy w przeglądarce otrzymamy oczekiwany zakres danych, jednak oczekujemy, aby dane zostały zainkludowane do arkusza po czym utworzony został z nich wykres.
Pobieranie danych będzie się odbywać asynchronicznie za pomocą metody .fetch() klasy UrlFetchApp. Metoda .fetch() tworzy żadanie pobrania danych z adresu URL przy użyciu opcjonalnych parametrów po czym zwróci rezultat. Naszymi parametrami opcjonalnymi są dane zawarte w zmiennej requestOptions.
Kolejnym krokiem jest przetworzenie otrzymanch danych. Dostanie się do zwróconych danych umożliwia metoda .getContextText(), która pobiera treść odpowiedzi HTTP zakodowaną jako ciąg znaków, czyli ‚string’. Dane trzeba także sparsować funkcją JSON.parse(). Po wykonaniu tych operacji możemy już odwoływać się do konkretnej wartości i przypisywać ją do komórek w arkuszu.
Odwołanie do arkusza wykonujemy za pomocą metody SpreadsheetApp.getActiveSpreadsheet().getSheetByName();
Ostatnim elementem, który trzeba wykonać jest konwersja formatu czasu unixowego do czasu rzeczywistego. Służy do tego funkcja FROMUNIXTOREAL(), której zasadę pisania już znamy z początku tego postu.
Czym jest obiekt Date() znajdziemy w dokumentacji pod linkiem:
Po zapisaniu funkcji i uruchomieniu zostaniemy poproszeni o przyznanie praw dla naszej aplikacji. Ważne także, aby została wybrana odpowiednia funkcja do uruchomienia. W naszym przypadku jest to myFunction(). Cały kod znajduje się na poniższym obrazku.
Po uruchomieniu kodu „Arkusz1” powinien wypełnić się danymi. Następnie klikamy (Wstaw / Wykres).
Konfiguracja pokazana na poniższym obrazku.
Podsumowujac.
Arkusz Google to na pozór wyglądające proste narzędzie jednak drzemią w nich olbrzymie możliwości dzięki Google Apps Script.