PHP - Utilisation de l'API Google Analytics

Cet article est extrait de Yohann Cerdan - www.ycerdan.fr




Voici une classe vous permettant de profiter des services d'analyse de site web proposés par Google. Vous allez pouvoir, très facilement, récupérer les données qui sont affichées sur votre interface Google Analytics.

\"analytics-2007\"


Cette classe s?appuie sur le web service proposé par google et utilise essentiellement deux types de paramètres : les metrics et les dimensions. Pour comprendre à quoi cela correspond, je vous conseil d?aller voir directement sur la documentation officielle.


Il est également indispensable de connaitre son ID de site web, que l?on retrouve dans l?url de Google Analytics quand on consulte ses stats. Exemple pour moi : https://www.google.com/analytics/reporting/?reset=1&id=14186909&pdr=xxx. Mon ID est « 14186909″ et il doit etre renseigner dans le constructeur de la classe.



\"screen_id\"


Les 2 principales méthodes de cette classe sont : getDimensionByMetric & getMetric.


getDimensionByMetric renvoie un tableau contenant 2 sous tableaux « labels » et « datas ». « labels » contient les informations formatées tel qu?on les voient dans l?interface alors que « datas » ne contient que les données brutes. Exemple :



renvoie



 Array

 (

     [labels] => Array

         (

             [0] => Firefox (17)

             [1] => Safari (5)

             [2] => Chrome (3)

             [3] => Internet Explorer (2)

         )

     [datas] => Array

         (

             [0] => 17

             [1] => 5

             [2] => 3

             [3] => 2

         )
 )


getMetric renvoie directement la valeur du metric demandé. Exemple :


 require_once(\'GoogleAnalyticsAPI.class.php\');
 $ga = new GoogleAnalyticsAPI(\'mon_adresse@gmail.com\', \'mon_password\', \'mon_id\', date(\'Y-m-d\', time()));

 $page_views = $ga->getMetric(\'pageviews\');


renvoie directement



 127

On peut alors mettre au point des récupérations de données plus complexe :



require_once(\'GoogleAnalyticsAPI.class.php\');

 $ga = new GoogleAnalyticsAPI(\'mon_adresse@gmail.com\', \'mon_password\', \'mon_id\', date(\'Y-m-d\', time()));

  

 // Stats de la journée en cours

  

 $navigateurs = $ga->getDimensionByMetric(\'pageviews\', \'browser\');

 $countries = $ga->getDimensionByMetric(\'pageviews\', \'country\');

 $keywords = $ga->getDimensionByMetric(\'pageviews\', \'keyword\');

 $source = $ga->getDimensionByMetric(\'pageviews\', \'source\');

 $pagePath = $ga->getDimensionByMetric(\'pageviews\', \'pagePath\');

 $visits = $ga->getMetric(\'visits\');

 $unique_visits = $ga->getMetric(\'visitors\');

 $page_views = $ga->getMetric(\'pageviews\');

 $page_views_cv = $ga->getMetric(\'pageviews\',\'/une-page-de-mon-arbo/\');

  

 echo \'<pre>\';

 print_r($navigateurs);
 print_r($page_views);

 echo \'</pre>\';

  

 echo \'<h2>Pour le \'.date(\'Y-m-d\', time()).\'</h2>\';

  

 echo \'<strong>Pages vues par navigateurs :</strong>\'.\'<br />\';

 foreach ($navigateurs[\'labels\'] as $label) {

     echo $label.\'<br />\';

 }

 echo \'<br />\';

  

 echo \'<strong>Pages vues par mots clefs :</strong>\'.\'<br />\';

 foreach ($keywords[\'labels\'] as $label) {

     echo $label.\'<br />\';

 }

 echo \'<br />\';

  

 echo \'<strong>Pages vues par source :</strong>\'.\'<br />\';

 foreach ($source[\'labels\'] as $label) {

     echo $label.\'<br />\';

 }

 echo \'<br />\';

  

 echo \'<strong>Pages vues par pagePath :</strong>\'.\'<br />\';

 foreach ($pagePath[\'labels\'] as $label) {

     echo $label.\'<br />\';

 }

 echo \'<br />\';

  

 echo \'<strong>Pages vues par pays :</strong>\'.\'<br />\';

 foreach ($countries[\'labels\'] as $label) {

     echo $label.\'<br />\';

 }

 echo \'<br />\';

  

 echo \'<strong>Nombre de visite(s) :</strong>\'.$visits.\'<br />\';

 echo \'<strong>Nombre de visite(s) unique(s) :</strong>\'.$unique_visits.\'<br />\';

 echo \'<strong>Page(s) vue(s) :</strong>\'.$page_views.\'<br />\';

 echo \'<strong>Page(s) vue(s) pour CV :</strong>\'.$page_views_cv.\'<br />\';


Enfin, dernier petit exemple avec une mise en forme basée sur Google Charts (qui fera l?objet d?une classe très bientôt) :


 require_once(\'GoogleAnalyticsAPI.class.php\');
 $ga = new GoogleAnalyticsAPI(\'mon_adresse@gmail.com\', \'mon_password\', \'mon_id\', date(\'Y-m-d\', time()));
 $navigateurs = $ga->getDimensionByMetric(\'pageviews\', \'browser\');
  
 echo \'<strong>Graphique des pages vues par navigateurs :</strong>\'.\'<br />\';
 foreach ($navigateurs[\'labels\'] as $label) {
     echo $label.\'<br />\';
 }
 echo \'<img src=&quot;http://chart.apis.google.com/chart?cht=p3&amp;chd=t:\'.implode(\',\',$navigateurs[\'datas\']).\'&amp;chs=550x100&amp;chl=\'.implode(\'|\',$navigateurs[\'labels\']).\'&quot; />\';


Ce qui donne comme résultat :


\"chart\"


Cette classe est documentée et toutes les variables sont décrites dans le code, n?ayez donc pas peur de la télécharger et de la tester \";-)\" .


Libre à vous de mettre en forme et d?exploiter les données proposées par les méthodes.


Note : Merci à William DURAND pour les posts qu?il à put faire sur Google Analytics et surtout pour la manipulation des dimensions et des metrics.


Attention : Google envoie toutes les données dans un flux xml en UTF8, si votre site est en UTF8, aucun problème, sinon, pensez à utf8_decode().






En pièce jointe, la classe GoogleAnalyticsAPI, téléchargeable également à l\'adresse http://www.ycerdan.fr/developpement/google-analytics-api/

Gpenverne

Gpenverne

Développeur backend symfonien, qui trouve toujours moyen de faire des machins avec des bidules même si ce n'est pas utile.

Read More