24 maja 2016

Nie takie API straszne, jak je malują - wykorzystaj środowisko R do pobierania danych z Google Analytics i Google Trends

Czy spotkałeś się kiedyś z sytuacją, w której funkcjonalności prezentacji i analizy danych w Google Analytics były dla Ciebie niewystarczające? Albo masz dość generowania cotygodniowych raportów w panelu GA, a następnie kopiowania ich do Excela? Jeśli tak, to świetnie trafiłeś. Do pozyskiwania takich informacji w sposób zautomatyzowany służy Analytics API (Application Programming Interface - automatyczny sposób komunikacji programów). Dzięki niemu proces pozyskania danych można usprawnić. 

Google Analytics dysponuje zdecydowanie większą ilością dostępnych informacji niż te zawarte w standardowych raportach. Dzięki obsłudze API mamy do nich dostęp. Postaram się podzielić się z Tobą moją wiedzą na temat praktycznego wykorzystania API do pozyskania danych.

Jak zacząć?
Wystarczą 2 kroki. Pierwszy to aktywowanie API analyticsowego dla naszego konta (jeśli wcześniej nie zostało to zrobione), drugi to zainstalowanie bezpłatnego oprogramowania R (język programowania oraz środowisko do obliczeń statystycznych i wizualizacji wyników źródło: Wikipedia).

Aby uruchomić opcję korzystania z API należy wejść na stronę:

https://console.developers.google.com/

Do pracy z API musisz wygenerować client ID i client secret. Aby to zrobić, postępuj zgodnie z poniższymi krokami:

1. Otwórz Credentials page.
2. Jeśli nie robiłeś tego wcześniej, stwórz OAuth autoryzację dla swojego projektu, klikając w Create credentials, następnie kliknij w OAuth 2.0 client ID. Później konfigurator może poprosić cię o stworzenie nazwy dla produktu. Gdy przejdziesz przez ten etap, wybierz Other application i nadaj nazwę swojemu projektowi.
3. W pop-upie otrzymasz client ID i client secret.
4. Jeśli coś pójdzie nie tak i nie uzyskasz dostępu do tych informacji, w pop-up odszukaj Client ID w OAuth 2.0 i kliknij w nazwę.

Client ID i client secret to kluczowe ciągi znaków dla całego procesu pobierania danych z Twojego konta przy użyciu R. Dlatego sugeruję skopiowanie ich do notatnika.

Teraz musimy aktywować API dla naszego konta. Aby tego dokonać, postępuj zgodnie z poniższą instrukcją:

1. Otwórz stronę z informacjami dla Analytics API - Overview page.
2. Kliknij w przycisk Enable API, który aktywuje Analytics API.

Teraz pozostaje nam zainstalować R na komputerze. Oprogramowanie można pobrać z poniższej strony:

https://cran.r-project.org/bin/windows/base/

Jeżeli nie miałeś wcześniej styczności z takim oprogramowaniem, załączam również link z krótkim wprowadzeniem do R:

https://cran.r-project.org/doc/contrib/Komsta-Wprowadzenie.pdf

Zapoznanie się z całą zawartością wprowadzenia nie jest warunkiem koniecznym dla opisywanej metody. W Sieci dostępne są również darmowe szkolenia oraz fora informatyczne, na których programiści chętnie udzielają porad w kłopotliwych sytuacjach. Jednak w tym przypadku musisz wiedzieć jedynie, jak wykonywać kod w R i postępować zgodnie z instrukcjami.

Po wykonaniu powyższych kroków masz już wszystko, aby zacząć naszą przygodę z R i Analytics API. Aby podłączyć się do swoich danych musisz otworzyć R i zainstalować pakiet RGoogleAnalytics. Hash i wszystko co następuję po nim możesz pominąć. Jest to tylko komentarz, który nie jest interpretowany podczas kompilacji kodu. Służy on jedynie utrzymywaniu odpowiedniej dokumentacji i nadzoru nad tym, co dzieję się w skrypcie. Opisywanie swoich kroków przy pomocy komentarzy ułatwia rozumienie wcześniej stworzonego kodu.


# instalacja pakietu
install.packages("RGoogleAnalytics")
# ładowanie pakietu do pamięci R
library("RGoogleAnalytics") 

Powyższe komendy pozwalają na zainstalowanie pakietu potrzebnego to utworzenia połączenia oraz załadowanie go do pamięci podręcznej R. Teraz będziesz musiał stworzyć token dla swojego skryptu. Na tym etapie będziesz potrzebować wcześniej wygenerowanych client ID i client secret. Do autoryzacji Twojego połączenia wykorzystaj poniższy skrypt. 

# tworzy token
token<-Auth(client.id="client id ", client.secret = "client secret")
# zapisuje token
save(token,file="./token_file")
# sprawdza poprawność tokena
ValidateToken(token) 

Jeśli token został poprawnie zaimplementowany nasze połączenia z API analyticsowym właśnie zostało uwierzytelnione i jest gotowe do pracy. Celem tego artykułu jest zaprezentowanie możliwości pobrania danych przy użyciu API, dlatego nie będę wchodził w szczegóły techniczne środowiska programistycznego.

W kolejnym kroku tworzymy zmienną, w której przechowywane będzie zapytanie do danych.

#Utworzenie listy przykładowych parametrów
query.list <- Init(                start.date = "2015-09-01",
       end.date = "2015-09-31",
       dimensions = "ga:date,ga:source,ga:medium",
       metrics = "ga:sessions",
       max.results = 10000,
       sort = "-ga:date",
       table.id = "ga:identyfikator widoku danych") 

Dwa pierwsze parametry funkcji Init odnoszą się do daty początkowej i daty końcowej ekstraktu. Parametry dimensions i metrics odpowiadają kolejno za wybór wymiarów i metryk do naszego zapytania. Nazwy metryki i wymiarów dostępne są na stronie:

https://developers.google.com/analytics/devguides/reporting/core/dimsmets

Google Analytics ogranicza jednak pozyskanie danych przez API do 7 wymiarów i 10 metryk, dlatego warto uwzględnić to przy generowaniu ekstraktu. Należy również pamiętać o tym, że nie wszystkie metryki i wymiary możemy ze sobą zestawiać tzn., że w przypadku nieprawidłowo zdefiniowanego zapytania napotkamy na błąd. 

Parametr max.result ogranicza maksymalny rozmiar Twojego zapytania. Atrybut sort ustala kierunek i zmienną dla sortowania naszego zbioru danych. Jednak, aby zapytanie zostało poprawnie skonstruowane, musisz dodać informację o tym, z którego widoku usługi chcesz pobrać dane. W tym celu w table.id wpisz identyfikator widoku danych, którego wartość łatwo znajdziesz w panelu administracyjnym Google Analytics w sekcji ustawienia widoku. Wykonanie powyższego kodu stworzy zapytania do obiektu query.list. W kolejnym etapie zbudujesz obiekt, który posłuży  już do bezpośredniego pozyskania danych z Google Analytics.
# Utworzenie obiektu Query Builder
ga.query <- QueryBuilder(query.list)
# Umieszczenie otrzymanych wyników w obiekcie data.frame
dane <- GetReportData(ga.query, token, split_daywise = T)
# Wyświetlenie pozyskanych danych
dane 

Jeśli znasz R w stopniu pozwalającym na swobodne poruszanie się po danych, już możesz rozpocząć analizę. Jeśli nie, zapisz dane w formie tekstowej i otwórz je środowisku, w którym czujesz najbardziej swobodnie np. w Excelu. Dzięki zautomatyzowanej formie pobierania danych można również ograniczyć problem próbkowania, pobierając dane dzień po dniu.

# Zapisanie ramki danych do pliku tekstowego
write.table(dane,"dane.txt",sep="\t")
Teraz przy tworzeniu własnych raportów i odnajdywaniu wzorców w danych nic nie jest w stanie Cię powstrzymać. Z pewnością nie będzie to panel Google Analytics. Może jedynie poziom Twoich umiejętności analizy danych w R, ale to zawsze można nadrobić. R łączy się również bez trudu z Google Trends. Nie jest to jednak oficjalna dystrybucja API Google’a tylko opensourcowy pakiet stworzony przez środowisko pasjonatów R. Google Trends daje możliwości sprawdzenia popularności określonych fraz w danym czasie i miejscu. Poniżej wykres popularności słów (jajka,karp,kielbasa) między 1 stycznia 2015 a 21 kwietnia 2016 w Polsce.

Możesz z łatwością zaobserwować, jak okres świąteczny wpływa na wyniki wyszukiwania fraz związanych z jedzeniem - widać wyraźne wzrosty w okolicach Bożego Narodzenia i Wielkanocy. Dzięki temu narzędziu możesz np. sprawdzić, które produkty powinny być promowane w danym miesiącu lub też, jak plasują się w porównaniu z konkurencyjnymi. Oczywiście podobny wykres możesz swobodnie wygenerować używając wersji webowej aplikacji. Jednak w przypadku cyklicznego raportowania, może to stać się nużące, a w takiej sytuacji nietrudno o błąd. Poza tym, mając już dostęp do danych z API możesz spróbować połączyć obie te informacje i wysnuć wiele ciekawych wniosków.

Aby połączyć się z Google Trends musisz wykonać poniższe komendy w środowisku R i posiadać konto Google.

# instalacja pakietu gtrendsR
install.packages("gtrendsR")
# załadowanie pakietu do używanych bibliotek
library(gtrendsR)
# zapisujemy nazwę użytkownika konta do zmiennej
usr <- "przykład@gmail.com"
# zapisujemy Google’owe hasło do zmiennej
psw <- "haslo"
# łączymy się z Google Trends
gconnect(usr, psw) 

Aby stworzyć raport musisz użyć funkcji gtrends. Pierwszym parametrem tej funkcji będą frazy, których popularność chcesz zmierzyć. Start_date w cudzysłowach wpisz datę początkową dla Twojego zapytania, a w end_date analogicznie - końcową. Możesz również zawęzić raport popularności wyszukań do parametru geograficznego.
# ch<- gtrends(c("kielbasa","jajka","karp"),start_date = "2015-01-01",end_date = "2015-12-01" ,geo = "PL") 

Tak przygotowany obiekt ch jest źródłem wielu cennych informacji. Aby do nich dotrzeć wystarczy wykonać kod z nazwą obiektu.
ch 
Stworzenie wykresu to już tylko jedna komenda.
plot(ch) 
To tak naprawdę jedynie przykłady naprawdę szerokiego użycia Analytics API i R. Zachęcam do korzystania i pogłębiania więdzy na temat możliwości obydwu narzędzi. Użycie ich może zaoszczędzić cenny czas podczas generowania raportów lub dać początek Twojej bazie danych.

Autor:
Jakub Krysicki, Digital Data Analyst

12 maja 2016

Sposób na poprawne śledzenie transakcji w sklepach na silniku PrestaShop za pomocą GTM

Jednym z kluczowych aspektów analityki w e-commerce jest zapewnienie maksymalnej poprawności danych transakcyjnych w Google Analytics. Jeśli korzystasz z e-płatności możesz spotkać się z problemem zliczania wszystkich transakcji.  Z takim wyzwaniem zmierzyliśmy się w przypadku jednego z naszych klientów, który korzysta z PrestaShop. Pokażemy, jak rozwiązaliśmy ten problem.

PROBLEM – brak poprawnego zliczania wszystkich transakcji
U naszego klienta zauważyliśmy znaczące różnice w ilości transakcji oraz wielkości przychodu pomiędzy Google Analytics a panelem PrestaShop. Po przeprowadzeniu testowych transakcji okazało się, że płatności wykonane przez Przelewy24 nie zliczają się w Google Analytics, a na stronie potwierdzenia zamówienia brakuje kodu modułu e-commerce.

PRZYKŁADOWE ROZWIĄZANIE – wpięcie kodu modułu e-commerce
Prawidłowe śledzenie transakcji, których płatność odbywa się online, może sprawić trudność. Nie wszyscy użytkownicy, po wykonaniu opłaty za swoje zamówienie, czekają na pojawienie się strony potwierdzenia zamówienia na naszym serwisie. Alternatywnym sposobem ich śledzenia jest odsyłanie kodu transakcji bezpośrednio przed przejściem do zewnętrznego serwisu z płatnością, a konkretniej, wpięcie kodu modułu e-commerce pod button.


Zanim jednak kod transakcji zostanie zaimplementowany musimy utworzyć parametry, które są wymagane przy śledzeniu e-commerce.

Pobranie wartości zmiennych dotyczących zakupionych produktów oraz samego zamówienia odbywa się bezpośrednio z kodu strony z wykorzystaniem niestandardowych kodów JavaScript w GTM. Poniżej przykład zmiennej, która zawiera liczbę zamówionych sztuk dla każdego produktu z koszyka.


Jeśli na stronie mamy wdrożony dataLayer, wówczas z jego pomocą możemy pobrać potrzebne wartości zmiennych.


Teraz wystarczy tylko przygotowanie niestandardowego tagu GTM zawierającego kod modułu e-commerce, który będzie wykonywany, gdy użytkownik kliknie w button „Kupuję i płacę”. Aby mieć pewność, że kod zdąży się odesłać przed przejściem do strony płatności, może być on wykonywany razem ze zdarzeniem GA, na przykład:

ga('send', 'event', 'purchase', 'przelewy24');

Listę niezbędnych parametrów oraz postać kodu transakcji możesz znaleźć na poniższych stronach:

Dzięki temu sposobowi możesz samodzielnie skonfigurować moduł śledzenia transakcji bez angażowania działu IT. Oczywiście, powyższe rozwiązanie można zastosować w każdym sklepie internetowym, w którym istnieje możliwość dokonania płatności online.

Autor:
Kamila Celeban, Junior Digital Analyst