Štatistiky pomocou Google Analytics
Jednoduché štatistiky pomocou Google Analytics a Google Char API
Myslím, že takmer každý, kto sa aspoň trocha zaujíma o webové technológie, už počul o službe Google Analytics (GA). Prostredníctvom tohto článku by som rád čitateľov informoval o možnosti využitia Google Analytics k tvorbe štatistík na vlastných stránkach.
Ako funguje Google Analytics
Prostredníctvom nástroja Google Analytics je možné zistiť, akým spôsobom sa návštevníci webových stránok dostali na webové stránky, akým spôsobom si ich prezerajú a čo je najdôležitejší, aké sa nich vyskytujú chyby. Tieto všetky informácie, ale i o veľa viac, sa dá vyčítať prostredníctvom webového rozhrania Google Analytics. Nasadenie GA na svoje stránky je pomerne jednoduché, stačí si vytvoriť profil prostredníctvom webového rozhrania, následne sa vygeneruje sledovací kód, ktorý sa už len umiestni na stránku.
Problém môže nastať vtedy, ak web robíte pre iné osoby, pre ktoré je možno problém sa prihlasovať do "nejakého ďalšieho" pomerne prepracovaného webového rozhrania, pričom ich zaujímajú len niektoré konkrétne údaje. Pohodlnejšie by bolo, ak by boli všetky informácie dostupné z jedného miesta (napr. v CMS).
Sťahovanie dát z Google Analytics
Ako väčšina služieb poskytovaných spoločnosťou Google, tak aj GA má verejne dostupné API, s tým rozdielom, že je z neho možné len čítať. Na internete sa dá nájsť viacero riešení, cez ktoré je možné sa pripojiť na Google Analytics exrpot API a sťahovať dáta. Ja používam triedu od Vincenta Kleijnendorsta, ktorú som trocha modifikoval pre svoje účely.
Pripojenie k Google Analytics API
Prvým krokom je overenie užívateľa. Google ponúka niekoľko metód overovania. Osobne si myslím, že medzi najjednoduchšie patrí ClientLogin, ďalšia možnosť je AuthSub.
Pripojenie cez ClientLogin
Najjednoduchšou možnosťou je ClientLogin, pretože stačí nakonfigurovať prihlasovacie meno a heslo priamo v skripte. Avšak tento spôsob má aj svoje nevýhody. Prihlasovacie údaje sa pri každej požiadavke posielajú po sieti a v prípade, ak sa niekto dostane k skriptu, v ktorom sú uložené, môže ho zneužiť.
Pripojenie cez AuthSub
Metóda AuthSub je založená na tom, že užívateľ po prihlásení na stránkach Google požiada o autorizačný token (platný aj po odhlásení užívateľa), ktorý sa vloží do HTTP hlavičky. Výhoda tohto riešenia je, že sa nikdy neposiela prihlasovacie meno a heslo. Taktiež ak sa niekto dostane k danému skriptu uvidí len tzv. hash. Pôvodná trieda od Vincenta Kleijnendorsta umožňovala len prvý spôsob prihlásenia. Užitočné informácie o tomto spôsobe nájdete tu.
try {
$oAnalytics = new Analytics("googleLogin", "googlePass"); // ClientLogin
$oAnalytics = new Analytics("/rAUgFGp...cl6-8ZGIKb_yBsCg"); //AuthSub
$oAnalytics->setProfileByName('profilName'); // vyber profilu podla nazvu
$oAnalytics->setProfileById('ga:12345678'); // alebo podľa ID (odporúčam)
$oAnalytics->setDateRange('YYYY-MM-DD', 'YYYY-MM-DD'); // volba obdobia
} catch (GoogleAnalyticsException $e) {
// do something ..
}
Dolovanie dát
Po úspešnom pripojení nám už len ostáva vyslať požiadavku, na základe ktorej nám budú zaslané požadované dáta. Google má vytvorený vlastný GData (Google Data Protocol) protokol na čítanie, resp. zápis dát. Na stránkach code.google.com nájdete užitočný nástroj, ktorý zjednoduší tvorbu dotazov.
Ukážka niekoľkých mojich najpoužívanejších dotazov:
// pocet navstev, utriedenych podla datumu (dni)
$visitors = $oAnalytics->getData(array( 'dimensions' => 'ga:date',
'metrics' => 'ga:visits',
'sort' => 'ga:date'));
// pocet zobrazeni stranok, utriedenych podla datumu (dni)
$pageviews = $oAnalytics->getData(array( 'dimensions' => 'ga:date',
'metrics' => 'ga:pageviews',
'sort' => 'ga:date'));
// statistiky prehliadacov
$browsers = $oAnalytics->getData(array( 'dimensions' => 'ga:browser',
'metrics' => 'ga:visits'));
// zadane slova do vyhladavacov
// poz. znamienko "-" znamena DESC,resp descending
$sources = $oAnalytics->getData(array( 'dimensions' => 'ga:source',
'metrics' => 'ga:visits',
'max-results' => '20',
'sort' => '-ga:visits'));
// priemerna dlzka navstevnika na stranke
$durations = $oAnalytics->getData(array( 'dimensions' => 'ga:year',
'metrics' => 'ga:avgTimeOnSite'));
// avg pocet zobrazenych stranok navstevnikom
$pageviewsPerVisit = $oAnalytics->getData(array('dimensions' => 'ga:year',
'metrics' => 'ga:pageviewsPerVisit'));
// novi navstevnici
$percetNewVisits = $oAnalytics->getData(array( 'dimensions' => 'ga:year',
'metrics' => 'ga:percentNewVisits'));
$keywords = $oAnalytics->getData(array( 'dimensions' => 'ga:keyword',
'metrics' => 'ga:visits',
'max-results' => '20',
'sort' => '-ga:visits'));
Metóda getData() vracia pole dát. Teraz už ich len stačí nejakým spôsobom interpretovať
Interpretácia dát
Pravdepodobne najjednoduchší spôsob interpretácie je použitie Google Chart API. To je možné rozdeliť do dvoch základných kategórií. A to API pre interaktívne grafy, kde je výstup flash. A statické, kde je výstupom Image.
Štatistika webových prehliadačov
/** ---------------------------------------------------- * Funkcia, vygeneruje parametre URL ku Google Chart API * Example: https://chart.googleapis.com/chart?cht=&chd= &chs= &...additional_parameters... * * http://code.google.com/intl/sk-SK/apis/chart/docs/making_charts.html#introduction * @param array - key:String, val:Number * @return String - url */ function browsers($browsers){ if(!is_array($browsers) || count($browsers) == 0){ return; } $otherBrowsersCount = 0; $count = 0; // prefiltruje pole, zanecha len zname prehliadace foreach ($browsers as $browserName => $value){ $count += (int)$value; switch($browserName){ case 'Chrome' : case 'Firefox': case 'Internet Explorer': case 'Opera' : case 'Safari' : continue; break; default : $otherBrowsersCount += (int)$value; unset($browsers[$browserName]); } } if($otherBrowsersCount != 0){ $browsers["Ostatné"]= $otherBrowsersCount; } } // konfiguracia grafu $data = "&chd=t:"; // hodnoty $label = "&chl="; // popisky $i = 1; // generovanie dat pre Google Chart API foreach ($browsers as $browserName => $value){ $data .= round(($value / $count) * 100, 0); $label.= str_replace(" ", "+", $browserName. " (".round(($value / $count) * 100, 2)."%)"); if($i != count($browsers)) { $data .= ",";$label.= "|"; } $i++; } return $data.$label; }
následne sa už len vloží do elementu img atribút src s hodnotou:
<img src="http://chart.apis.google.com/chart?chs=600x275&chtt=Štatistika+webových+prehliadačov&cht=p<?php echo browsers($browsers); ?>&chma=|0,5" width="600" height="275" alt="" />
Príklad vygenerovaného obrázka z Google Char API:

Štatistika návštev a zobrazení
/** ----------------------------------------------------
* Funkcia ktora spocita navstevnikov, zobrazenia a
* naformatuje data pre Google Chart API.
* ['10.03',14, 42] - [dd.yy , visits, pageviews]
*
* @param array - navstevnici
* @param array - zobrazenia
* @return array - index 0 String data pre Google Chart API
* index 1 int sucet navstevnikov
* index 2 int sucet zobrazeni
*/
function chartData($visitors, $pageviews){
if(
(!is_array($visitors) || count($visitors) == 0) &&
(!is_array($pageviews) || count($pageviews) == 0)
){
return;
}
// prefiltruje data
$visitors = array_map("isNumeric", $visitors);
$pageviews = array_map("isNumeric", $pageviews);
$data[0] = "";
$data[1] = 0;
$data[2] = 0;
$i = 1;
foreach ($visitors as $key => $val){
$data[0] .= "['". editChartDate((string)$key)."',".$val.", ".$pageviews[$key]."]";
$data[1] = $data[1] + (int)$val;
$data[2] = $data[2] + (int)$pageviews[$key];
if($i != count($visitors)) { $data[0] .= ", "; }
$i++;
}
return $data;
}
<div id="chart_div"></div>
<script type="text/javascript">
google.load("visualization", "1", {packages:["corechart"]});
google.setOnLoadCallback(drawChart);
function drawChart() {
var data = new google.visualization.DataTable();
data.addColumn('string', 'Dátum');
data.addColumn('number', 'Návštevy');
data.addColumn('number', 'Zobrazenia');
data.addRows([<?php $data = chartData($visitors, $pageviews); echo $data[0]; ?>]);
var chart = new google.visualization.AreaChart(document.getElementById('chart_div'));
chart.draw(data, {width: 1000, height: 300, title: 'Štatistika návštev a zobrazenia stránok',
hAxis: {title: 'Year', titleTextStyle: {color: '#f6f6f6'}}
});
}
</script>
Príklad generovaného interaktívneho grafu:

Ďalšie štatistiky (priemerná doba na stránke, percentuálny podiel nových návštevníkov, ... ) nájdete v projekte, ktorý je umiestnený na konci článku k stiahnutiu.
Obmedzenia
Štatistiky riešené cez GA majú aj určité nevýhody, o ktorých sa je dobré zmieniť. Keďže výstupom z GA API sú XML súbory, komunikácia so sebou nesie pomerne vysokú réžiu dát a zdržanie (delay), čo je asi najväčšie negatívum tohto riešenia. Okrem toho prístup na GA API ma určité obmedzenia:
- Maximálne 10,000 požiadaviek v priebehu 24 hodín
- 10 požiadaviek v priebehu jednej sekundy
- 4 súbežné požiadavky v danom čase na 1 IP adresu
Zdroj: http://code.google.com/apis/analytics/docs/gdata/home.html
Zdroj: http://www.alexc.me/using-the-google-analyt...er-of-page-views/74/
Zdroj: http://code.google.com/apis/chart/
Zdroj: http://www.swis.nl/ga/
Projekt na stiahnutie: GoogleAnalyticsStats.rar
© Peter Jurkovič
Je študent, ktorý sa zaujíma o webové technológie, platformu Java a príležitostne si niečo prečíta o platforme Android.
10 komentárov k článku:
Komentovať môžu iba prihlásení
Zaregistruj sa cez bezplatnú registráciu alebo použi login cez Facebook (FB Connect)
Prihlás sa tu, ak už máš profil na Zajtra.sk:
David 12.2.2012 16:10:25
Dík za super článek...
Ale možná jsem narazil na bug, pokud si nechám zobrazit statistiky od-do tak to v textové tabulce kde jsou návštěvy a zobrazení atd. neovlivní žádné údaje (pouze datum se změní). Taky si toho někdo všiml?
Díky.
Matúš Koprda 18.1.2012 23:58:22
Aha, to je dosť fajn. Ja som používal oficiálne API a tam treba mať zaregistrovanú vlastnú Google aplikáciu, ktorá je previazaná s Google účtom.
Peter Jurkovič 18.1.2012 23:13:30
Ďakujem za feedback.
Ako napísal Matúš Jančík, je to pomerne jednoduché. Stačí si vygenerovať token, použiť ho v triede, zvoliť si profil a funguje to. Netreba nič registrovať.
Matúš Jančík 18.1.2012 21:16:31
Matus tak ako pises. Nic nieje potrebne registrovat. Ja to vyuzivam napriklad na zobrazenie statistik v dashboardoch. Velmi jednoduche a rychle.
Matúš Koprda 15.1.2012 17:17:45
Michal: hm, henten odstavec poukazuje na to, že klienti chcú používať jeden (svoj) systém a nie ešte aj analytics navyše.
Mňa by zaujímalo prečo je lepšie používať nejakú neoficiálnu vec, keď existuje oficiálna.
Napadá mi akurát jedna možnosť.. oficiálne API potrebuje registrovať aplikáciu cez Google APIs a tu to nie je spomenuté. Čiže nie je to potrebné? (ani pri použití tokenov?)
Michal Ovsanik 15.1.2012 14:27:34
Matúš veď to napísal v článku.:)
"Problém môže nastať vtedy, ak web robíte pre iné osoby, pre ktoré je možno problém sa prihlasovať do "nejakého ďalšieho" pomerne prepracovaného webového rozhrania, pričom ich zaujímajú len niektoré konkrétne údaje."
Matúš Koprda 15.1.2012 13:43:41
Aké sú výhody oproti oficiálnemu API? ( http://code.google.com/apis/analytics/docs/ )
Fero Volar 15.1.2012 12:41:12
Pekne spracovane, vdaka!
Michal Ovsanik 14.1.2012 18:11:07
Dik super...O tomto som fakt nevedel!
TOP dlhšie
- 01 Redesign SNG.sk: Súťažné návrhy od čitateľov Zajtra.sk (37963x)
- 02 11 obrovských prešľapov návrhu loga (26067x)
- 03 Aj ty dokážeš urobiť lepší web pre SNG.sk! (20730x)
- 04 Dôveruj svojej babke, vie o internete viac ako si myslíš (10507x)
- 05 14+1 zaujímavých Timeline Coverov od Slovákov (10265x)
- Aj ty môžeš byť najčítanejší. Napíš článok »
TOP tento mesiac
- 01 Dizajnérska súťaž - vytvor dizajn prezentačnej stránky pre školu balenia dievčat a žien (3073x)
- 02 STV ako SNG: Urobil by si zadarmo STV krajší web? (2872x)
- 03 Zajtra.sk bolo predané. (2614x)
- 04 Robíme WordPress - nový seriál od yablka (1685x)
- 05 V Bratislave vzniká nový priestor pre startupy (1539x)
- Aj ty môžeš byť najčítanejší. Napíš článok »
Nové články:
- 17.Spropaguj seba a svoj nápad!
máj - 16.Prečo vytvárať mikrostránky?
máj - 15.STV ako SNG: Urobil by si zadarmo STV krajší web?
máj - 11.Nové úložisko ZyXEL NSA325
máj - 9.Komunikáciou k získaniu osobnej moci
máj - Aj ty môžeš byť najčítanejší. Napíš článok »
Pekné veci
Pekné veci
Pekné veci
Pekné veci
Posledné komentáre
- @Marcel Zúbrik má pravdu. Ako iné je to v diskusiách, ale keď už hladáš zamestnancov, ta...
- Čo vidím ja - som ktosi anonymný a chcem, chcem, chcem ... žiadne ponúkam. Taká bude s d...
- Čo za to?
- Ja som si stiahol, aby som mohol pozerať vo vlaku a pohoda. :) Pokiaľ ti videá nevie pre...
- diky, to ma symbolizovat fotografiu
Kritika
Vieš ako robiť veci lepšie? Pomôž našim odvážnejším členom a skritizuj im projekty!
Reklama
Slovenská IT komunita
Michaela Mikuličova
41 ročná
Ernest Klotton
Obchodník, Bratislava
Patrik Čevela
21 ročný Podnikateľ, Liptovský Mikuláš
Reklamna Agentura
Róbert Jakubička
Hlohovec
Jan 'Zmuro' Chmelik
27 ročný, Banská Bystrica
Miloš
Mirk Belly
18 ročný Grafik, Nitra
Martin Marochnic
Peťo Teplický
35 ročný, Bratislava- Ďalší »
Seriály zo Zajtra.sk
· Ako písať blog
· Ako sa stať PHP ninja s Yii Frameworkom
· Aplikácie pre Facebook
· CSS triky
· iOS vývojára príhody a skúsenosti
· Modelovanie webového sídla
· Nauč sa CodeIgniter [HD]
· Nauč sa jQuery [HD]
· Nette PHP framework
· OOP v Javascripte
· Slovenskí iOS developeri
· Yablkov TurboTip [HD]


































Peter Jurkovič 12.2.2012 21:50:47
@David: Ďakujem za upozornenie, malo by to byť opravené.