Utilisation de l’API Google Analytics avec la class GAPI
Vous le savez probalement, comme une majorité de ses produits, Google Analytics propose une API permettant de collecter les informations de vos différents comptes. Vous retrouverez la documentation complète de l’API sur code.google.com mais en utilisateur de PHP libre j’ai été assez déçu de voir que la seule documentation présente fasse appel au framework Zend .
Heureusement la communauté PHP étant très proactive, une recherche dans la base de donnée code.google.com nous retourne quelques class très avancée offrant plus ou moins de liberté quand aux informations accessible.
Je me suis pour ma part arrêté à la class GAPI assez complète et assez ouverte pour me permettre d’obtenir les informations dont j’ai besoin.
Fonctionnement :
Inclure dans votre fichier php effectant les requêtes le fichier contenant la class :
require ‘class/gapi.class.php’;
Définissez ensuite vos informations de connexion :
define('ga_email','email@adress'); define('ga_password','password'); define('ga_profile_id','ID');
Interessons nous tout d’abord à : define(‘ga_profile_id’,’ID’);
Vous pouvez retrouver l’ID en question en vous connectant à votre Dashboard Gooogle Analytics du compte dont vous souhaiter extraire les informations. Elle ce trouve après la variable « id » dans l’URL
Ex :
https://www.google.com/analytics/reporting/dashboard?id=33235270&seg0=222735543&pdr=20100801-20100831&cmp=average&gdfmt=nth_day#lts=1283530526173
Une fois ces informations définie il vous reste à créé la requête en fonction des informations que vous souhaitez obtenir.
Une liste des Dimensions et Metrics disponible est accessible dans la documentation de l’API ainsi qu’une liste des combinaison possible entre dimensions et metrics.
Utilisation de la class :
$ga->requestReportData(ga_profile_id, array(Dimensions),array(Metrics),Tri,Filtre,Date début, Date fin, Index, Nbr résultats);
array(Dimensions) : la ou les qualifications des données que vous souhaitez obtenir, c’est à dire, par exemple, si vous ne souhaitez pouvoir triez les informations obtenue sur vos visiteurs par leur navigateur ou par mois, jour, année.
array(Metrics) : la ou les informations que vous souhaitez obtenir de vos statistiques. Par exemple le nombre de page vue, le nombre de visiteur ou encore le temps moyen passé sur votre site web
Tri : vous permets de retourner dans un certains ordre vos informations. Ce tri ne peux ce faire que sur une dimension et doit être précédé d’un « - » pour être inversé. Si vous souhaitez par exemple trier les valeurs obtenues par mois puis par navigateur vous utiliserez le filtre » month, browser »
Filtre : le filtre vous permet de parser vos visiteurs en fonction de conditions bien précise tel que, par exemple, la langue de leur navigateur ou la version de leur navigateur. Ces filtres ne peuvent être créé que à partir des Dimensions, non des metrics.
Je vous recommande de ne pas créé vos filtre dans l’appel à la class mais dans une variable au par avant afin d’allégé votre code.
Exemple :
$filter = ‘language == fr || language == fr-fr’; ne sortira que les visiteurs dont la langue du navigateur est fr ou fr-fr
Nbre de résultats (optionnal) : Suite à une limite de l’utilisation de l’API il n’est apparemment pas possible de sortir plus de 1000 résultats à la fois.
Quelques exemples concret :
$ga->requestReportData(ga_profile_id,array(‘month’),array(‘pageviews’,'visits’, ‘timeOnSite’),’month’,$filter, ’2010-06-01′ , ’2010-08-31′,’1′,’999′);
Cette requête vas sortir le nombre de visites, pages vue et le temps total passé sur le site par mois
$ga->requestReportData(ga_profile_id,array(‘Browser’,'BrownserVersion’),array(‘pageviews’,'visits’),’Browser’,$filter, ’2010-06-01′ , ’2010-08-31′,’1′,’999′);
Cette requête vas sortir le nombre de visites et pages vue par Browser et par version de Browser
Une fois cette requête effectuée, il ne vous restera plus qu’a utiliser les résultats obtenus.
La class étant très bien construite, si vous mélanger Dimensions et Metrics ou tentez des combinaisons impossible une erreur précise vous sera immédiatement retournée.
foreach($ga->getResults() as $result){ echo $result->GetPageViews(); // Vous retournera le nombre de page vue selon le tri dimensionnel que vous avez opéré lors de votre requête. } echo $ga->GetPageViews(); // Vous retournera le nombre total de pages vues sans tri dimensionnel.
Il ne vous reste maintenant plus qu’a trier vos résultats, les parser, les ré-organiser et surtout les afficher !
Je développerais ce point dans un autre article sur l’utilisation de l’API Google Charts afin de réalisé des graphiques.
En attendant voici un exemple concret et complet de l’utilisation de la class GAPI :
$filter = 'language == fr || language == fr-fr'; $ga->requestReportData(ga_profile_id,array('month'),array('pageviews','visits', 'timeOnSite'),'month',$filter, '2010-06-01′ , '2010-08-31′,'1′,'999′); $datas = array(); foreach($ga->getResults() as $result) { $tos1 = $result->getTimeOnSite()/$result->getVisits(); // Cette division permet d'obtenir le temps moyen par visite. Voyez la documentation pour de plus amples informations sur les calculs possible. $tos2 = substr($tos1,0,3); $tos = date(« i:s »,$tos2); $datas[$result->getMonth()] = array(); $datas[$result->getMonth()]['pageviews'] = $result->getPageviews(); $datas[$result->getMonth()]['visits'] = $result->getVisits(); $datas[$result->getMonth()]['timeOnSite'] = $tos; } echo ' Total pageviews: ' . $ga->getPageviews() . ' total visits: ' . $ga->getVisits() . ' '; echo '<pre>'; print_r($datas); echo '
‘;
Je vous renvoie également vers la documentation officielle de la class GAPI dans laquelle vous trouverez de plus amples informations.

Pas de commentaire REPONDRE
Et vous, votre avis ?