Analytics API: statistiche di Google analytics sul tuo sito

Oggi affrontiamo un tema poco trattato in Italia (e in generale ovunque) ovvero come implementare sul proprio sito/pannello di gestione personalizzato le potenti statistiche di Google Analytics.  Addentriamoci quindi dentro questo potente tool di casa Google e nelle sue Api di sviluppo.

Le api di Google Analytics sono sicuramente abbastanza complesse e richiedono una conoscenza almeno minima di php, cercherò di essere il più chiaro possibile, ma sappiate fin da subito che con questo potente tool potete estrapolare praticamente TUTTO dalle pagine viste, ai browser usati dai visitatori. Pertanto se a fine articolo vi fosse venuta “fame” di analytics vi consiglio di visitare la reference guide ufficiale.

01. Panoramica generale e introduzione alle API Google

Le api sono dei potenti strumenti messi a disposizione dei developer per poter usare i vari tool e gestirli come meglio credono. Purtroppo molte volte risultano molto complessi e di difficile apprendimento. Le api di Analytics non differiscono da questo sgradevole “standard” e per studiarle appieno devo ammettere di aver  riscontrato molteplici “intoppi” tecnici. In questa breve guida vi mostrerò solo alcune tecniche (le più utili) per estrapolare i nostri dati da Google Analytics.

Per prima cosa le api possono essere usate con moltissimi linguaggi: da javascript a Piton per passare ad Aspx. Personalmente mi sono “tuffato” nell’implementazione su PHP. Per poter usare le api su php dovete disporre di un interprete che cambi il linguaggio da Google ad PHP per rendere normalizzati e usabili i dati estratti.

L’inteprete/interfaccia php si chiama in questo caso “Gapi” , per contunuare il tutorial vi invito a leggere la reference guide e di scaricare il pacchetto Gapi che ci servirà per estrarre i nostri dati.

Gapi su Google >>

Le api si basano essenzialmente su dimension e metrics:

DIMENSIONS: Sono fattori, come ad esempio browser, source, term, campaign.

METRICS: Sono l’unità di misura in cui visualizzare i dimensions.

Ora veniamo al tutorial vero e proprio.

02. Le basi: logging e estrazione  account

Scaricato il file Gapi estraete il file gapi.class.php nella root del vostro sito. A questo punto create un nuovo file php dove richiameremo i dati di analytics.

<?php

//estrai-dati.php

define('ga_email','tuamailgoogleanalitcs');
define('ga_password','password');
define('ga_profile_id','IDanalistics'); //solo numeri!

require 'gapi.class.php';

$ga = new gapi(ga_email,ga_password); //accesso

In questo primo esempio estraiamo i dati per sapere quanti e quali siti attivi sono presenti sul nostro account. Per farlo usiamo la funzione requestAccountData()

//una sorta di "query"
$ga->requestAccountData();

//per ogni risultato scrivi il profilo attivo sull'account
foreach($ga->getResults() as $result)
{
  echo $result . ' (' . $result->getProfileId() . ")<br />";
}

?>

Come vedete il funzionamento è molto simile a una query classica di php/mysql con la differenza ovvia della sintassi dovuta alle api. La logica in ogni caso rimane uguale. Il risultato a schermo dovrebbe essere una lista di tutti i siti attivi sul vostro account Analytics.

03. Qualcosa di più avanzato: introduzione ai filtri

Ora vi starete chiedendo: come faccio ad estrarre determinate informazioni? La risposta è quasi scontata: usando i filtri messi a disposizione dalle api possiamo estrarre davvero qualsiasi cosa. Ecco un case-study: voglio estrapolare le visite del mio sito per geo-location: Stati uniti.

Ecco il filtro da usare:

//[...] info login api

$filter = 'country == United States'; //specificate il paese per filtrare Italy è l'Italia

//[...] query api

Gli operatori sono quelli tipici di php a cui siamo abituati. Possiamo usare quindi && per filtrare altre cose, come ad esempio il browser usato dai nostri visitatori:

$filter = 'country == Italy && browser == Firefox';

Una volta impostato un filtro possiamo eseguire la query vera e propria di estrazione dati:

$ga->requestReportData(ga_profile_id,array('browser','browserVersion'),array('pageviews','visits'),'-visits',$filter);

La query inizia ad essere complessa? non vi preoccupate:

ga_profile_id ==> serve per connettersi al vostro sito da controllare

array(x,y) ==> gli array sono usati per specificare metrica e dimensions del report da visualizzare. In pratica (molto astrattamente) pensiamo a quello che vogliamo estrarre.

-visits ==> ordina il risultato per le visite

filter ==> il risutalto viene filtrato secondo quanto indicato in precedenza nel filtro, un sorta di WHERE di mysql (solo per farvi capire meglio).

Data la complessità vi posto un utilissimo schema della function requestReportData (tutti i valori che vedete sono quelli di default):

function requestReportData($report_id,
                           $dimensions,
                           $metrics,
                           $sort_metric=null,
                           $filter=null,
                           $start_date=null,
                           $end_date=null,
                           $start_index=1,
                           $max_results=30)

Interessante la funzione max_result che ci permette di limitare la query (indispensabile per chi ha molti filtri!).

Ovviamente per una corretta visualizzazione a schermo dei risultati vi consiglio almeno le prime volte di usare una tabella dove posizionare i risultati estratti. Ora posterò questo esempio completo per estrarre dal proprio account un report di visite per browser in Italia con visite e pageviews totali.

<?php
define('ga_email','youremail@email.com');
define('ga_password','your password');
define('ga_profile_id','your profile id');

require 'gapi.class.php';

$ga = new gapi(ga_email,ga_password);

$filter = 'country == United States && browser == Firefox';

$ga->requestReportData(ga_profile_id,array('browser','browserVersion'),array('pageviews','visits'),'-visits',$filter);
?>
<table>
<tr>
  <th>Browser &amp; Browser Version</th>
  <th>Pageviews</th>
  <th>Visits</th>
</tr>
<?php
foreach($ga->getResults() as $result):
?>
<tr>
  <td><?php echo $result ?></td>
  <td><?php echo $result->getPageviews() ?></td>
  <td><?php echo $result->getVisits() ?></td>
</tr>
<?php
endforeach
?>
</table>

<table>
<tr>
  <th>Total Results</th>
  <td><?php echo $ga->getTotalResults() ?></td>
</tr>
<tr>
  <th>Total Pageviews</th>
  <td><?php echo $ga->getPageviews() ?>
</tr>
<tr>
  <th>Total Visits</th>
  <td><?php echo $ga->getVisits() ?></td>
</tr>
<tr>
  <th>Results Updated</th>
  <td><?php echo $ga->getUpdated() ?></td>
</tr>
</table>

Ovviamente ecco alcune precisazioni sulla seconda parte:

Il primo loop serve a stampare in tabella la lista di tutti i browser estratti con relative visite/pageviews. La seconda parte (anzi la seconda tabella), serve per estrarre i risultati “generali” dell’account:

getTotalResult() ==>Se presente un loop, recupera quanti elementi sono stati visualizzati (nel nostro caso quanti browser sono stati considerati).

getPageViews() ==>Recupera le pagine viste totali in base al filtro/query

getVisits() ==>Recupera le visite totali in base al filtro/query

getUpdated() ==>Resistuisce il refresh dei risultati visualizzati con uno timestamp

Non vi basta ancora? Bhè continuate a leggere!

04. Query in tabella di visite/pagine viste in un intervallo di tempo

screen-analitycs
Il risultato su un pannello di gestione di un mio cliente.

Fino a qui mi sono limitato a prendere in esame e spiegarvi gli esempi ufficiali che troverete nel pacchetto gapi. Ora facciamo qualcosa di nostro per svelarvi le vere potenzialità delle api.

In questo esempio di si vuole estrarre i valori solo per determinati intervalli di tempo

<?php 

define('ga_email','xxx@xx.it');
define('ga_password','pass');
define('ga_profile_id','ID');

require 'gapi.class.php';

$ga = new gapi(ga_email,ga_password);
//vi faccio capire il funzionamento del giorno di oggi e ieri
$oggi = date("Y-m-d"); //imposta la data odierna
$ieri = date("Y-m-d", time()-86400); //imposta la data di ieri
//stampo i valori di ieri e oggi per verificare che siano corretti (potete eliminare questo pezzo)
echo $ieri;
echo "<br>";
echo $oggi;

//Ho introdotto nella "query" anche lo start date e end date
$ga->requestReportData(ga_profile_id, array('browser','browserVersion'), array('pageviews','visits'),'-visits','',''. date("Y-m-d", time()-86400) .'',''. date("Y-m-d") .'');

$gaResults = $ga->getResults();

?>
//visualizzo i risultati sotto forma di tabella
<table>
<tr>
  <th>Total Pageviews</th>
  <td><?php echo $ga->getPageviews() ?>
</tr>
<tr>
  <th>Total Visits</th>
  <td><?php echo $ga->getVisits() ?></td>
</tr>
</table>

Nella tabella vengono visualizzati le pagine viste e le visite totali nell’intervallo di tempo prefissato (2 giorni). Se inserito in un pannello di gestione questo può risultare molto comodo dato che fornisce un ottimo “colpo d’occhio” sulle statistiche giornaliere. Ovviamente vi potete sbizzarrire come meglio desiderate, mettendo ad esempio la possibilità di poter filtrare da parte dell’utente/cliente il periodo start-date/end-date predisponendo un semplice form di controllo.

05. Conclusioni

Ovviamente i dati estratti possono essere usati anche per creare grafici (x,y) in php/jQuery davvero ben fatti ed evocativi. Anche se per questo serve un pò di dimestichezza con le api.

In definitiva le api di Google analytics sono sicuramente il TOP per chi vuole statistiche precise ed accurate direttamente sul proprio sito/gestione in modo professionale (ma un pò complesso). Un must per tutti i developer web!

Se ti è piaciuta la guida lascia un commento per farmi sapere cosa ne pensi! E non dimenticare di condividere l’articolo! Grazie!

0 0 voti
Valutazione dell'articolo
Iscriviti
Notificami
guest

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.

30 Commenti
Vecchi
Più recenti Le più votate
Dario
Dario
14 anni fa

Ciao è molto interessante ma non mi funziona. Mi restituisce pagina bianca.

http://www.dariomentesana.it/dati.php

Cosa può essere? Grazie

Dario
Dario
14 anni fa

Ti ringrazio molto, ecco il link:

http://pastebin.com/0ekPU1Wa

Dario
Dario
14 anni fa

Si, li ho levati apposta nel pastebin, ma ho inserito i dati correttamente

dario
dario
14 anni fa

Ok ho risolto! Il codice che inserivo di analitics non corrispondeva. Ma se per esempio volessi inserire il filtro anche per vedere le città o le regioni (in italia)?? Ti ringrazio e ti auguro un sereno natale a te e famiglia

Edoardo
Edoardo
14 anni fa

Ciao,
secondo te c’è un modo per estrarre in automatico il ga_profile_id senza inserirlo a mano?

Luca
Luca
14 anni fa

Grandissima Guida! Grazie davvero!
E te lo dico alle 3.15 del mattino 🙂

Massimiliano
Massimiliano
14 anni fa

Ciao Riccardo grazie molto per l’ottima guida, cè solo un problema che a me da questo errore:

Fatal error: Uncaught exception ‘Exception’ with message ‘GAPI: Failed to authenticate user. Error: “Request failed, fopen provides no further information”‘ in D:\SITI WEB\lavori\audit\statics\gapi.class.php:418 Stack trace: #0 D:\SITI WEB\lavori\audit\statics\gapi.class.php(62): gapi->authenticateUser(‘$ga_email’, ‘$ga_password’) #1 D:\SITI WEB\lavori\audit\statics\HelloAnalyticsApi.php(17): gapi->__construct(‘$ga_email’, ‘$ga_password’) #2 {main} thrown in D:\SITI WEB\lavori\audit\statics\gapi.class.php on line 418

Massimiliano
Massimiliano
Rispondi a  Riccardo Mel
14 anni fa

si ho messo direttamente la email e la password ma nulla lo stesso errore eppure riesco ad entrare in analytics normalmente

Massimiliano
Massimiliano
Rispondi a  Riccardo Mel
14 anni fa

una curiosità si deve abilitare qualcosa sul mio pc?

Massimiliano
Massimiliano
Rispondi a  Massimiliano
14 anni fa

scusami ma dentro le define devo metterci la email e la password con cui accedo a google analytics?

webskey
webskey
14 anni fa

si le api funzionano ma pultroppo mi compaiono solo i siti web + id che contiene account analytics non mi visualizza il numero di visite e numero visitatori

webskey
webskey
14 anni fa

mi domandavo, sarebbe possibile fa visualizare il numero dei vivitatori e il numero delle visite, anziche le pagine visualizate

Fabio
Fabio
13 anni fa

Volevo fare un domanda. È normale che la pagina dei risultati impieghi molto tempo a caricare? Siamo tra 5 e 10 sec. Uso google graph! Grazie!

massimiliano
massimiliano
12 anni fa

Una domanda.
Perchè questa riga “$gaResults = $ga->getResults();” quando nella sezione html non viene ricavata la variabbile?

massimiliano
massimiliano
12 anni fa

dove trovo questo ID sto spulciando analytics in tutto o quasi ma non lo trovo.

massimiliano
massimiliano
12 anni fa

Ho trovato questo ID account ma se lo metto mi da questo errore:
Fatal error: Uncaught exception ‘Exception’ with message ‘GAPI: Failed to request report data. Error: “GDatainvalidParameteridsInvalid value ‘ga:UA-29858203-1’. Values must match the following regular expression: ‘ga:[0-9]+'”‘ in D:\SITI WEB\lavori\audit2\gapi.class.php:218 Stack trace: #0 D:\SITI WEB\lavori\audit2\home.php(77): gapi->requestReportData(‘29858203’, Array, Array) #1 {main} thrown in D:\SITI WEB\lavori\audit2\gapi.class.php on line 218

Chiara
Chiara
11 anni fa

Ciao!
Come posso fare x avere i dati sul mio sito multi country …eliminando un country in particolare u.s? Si può costruire un codice ? Per esempio vorrei capire cosa gli utenti europei guardano sul mio sito … Pagine e contenuti più cluccate…Ma la predominanza degli utenti americani è schiacciante e i dati sono U.s.a. Centrici…

pk86
pk86
11 anni fa

Mi chiedevo: non esiste qualcosa di pronto che visualizza almeno i dati principali? Come ad esempio succede con alcuni plugin per wordpress (ad esempio Google Analytics Dashboard for WP), ma implementabile tramite php?

cristian
cristian
11 anni fa

Buonasera Riccardo,
approfitto della sua cortesia e competenza per chiederle un parere; utilizzo questo script da anni http://danzambonini.com/a-google-analytics-dashboard-to-check-todays-referrers-for-multiple-websites/ , lo trovo molto comodo perchè mi consente di avere in una unica pagina le statistiche del today di tutti i siti di un account GA, da 3 giorni però non funziona più, penso sia un problema lato google perchè pur hostando i file su 5 altri server, dove ho in hosting altri siti), nemmeno con questi funziona.

Esiste un modo per risolvere o comunque per ottenere lo stesso output?

Saluti
CRistian

Marco
Marco
9 anni fa

Ciao Riccardo,
sono un neofita e avrei una domanda: posso ricavare le 5 pagine più viste di un sito web e proporne i link sulla home in automatico? In maniera tale che ovviamente queste si aggiornarno ogni volta che viene aperta la home stessa.
grazie
Marco

Rimani Aggiornato
Nuove idee, zero Spam
Ti invieremo solo le ultime novità di articoli o nostri progetti.
Iscrivendoti accetti la nostra privacy poliicy. Una volta iscritto, ricordati di attivare l'iscrizione cliccando sul link ricevuto via mail.
30
0
Esprimete la vostra opinione commentando.x