• Ce blog — désormais archivé — est en lecture seule.

API Google Analytics Round 2 – Graphiques et statistiques par page

Après mes premiers essais d’hier, et mes idées d’implémentation dans mon système de blog, je me suis mis à l’oeuvre. J’ai donc ajouté un rendu au code d’hier (avec la librairie graphique de Google ici) et mis en place pour chacun de mes articles, des statistiques journalières.

Graphique avec l’API Google Chart

L’API Google Chart est une API qui permet de créer des graphiques (format image) assez simplement. Le lien qui m’a été utile est le suivant : http://code.google.com/intl/fr/apis/chart/basics.html. J’avais commencé avec Yahoo UI que j’utilise régulièrement au travail, mais l’intérêt était moindre et je voulais consommer le moins de ressources possibles. Cependant YUI permet d’avoir des graphiques live, ce qui peut avoir son utilité.

Donc j’ai repris le code d’hier, je l’ai modifié un petit peu et voilà le résultat :

<?php

$email = '*******@*******';
$passwd = '*******';
$ids = '*******';

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "https://www.google.com/accounts/ClientLogin");
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

$data = array('accountType' => 'GOOGLE',
'Email' => $email,
'Passwd' => $passwd,
'source'=>'CLI_GAnalytics',
'service'=>'analytics');

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

$hasil = curl_exec($ch);
$hasil = @split("Auth=", $hasil);
$auth = $hasil[1];

curl_close($ch);

$current_date = date('Y-m-d', time());
$ch1 = curl_init("https://www.google.com/analytics/feeds/data?ids=ga:" . $ids . "&metrics=ga:visits&dimensions=ga:browser&start-date=" . $current_date . "&end-date=" . $current_date);

$header[] = 'Authorization: GoogleLogin auth=' . $auth;

curl_setopt($ch1, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch1, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch1, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch1, CURLOPT_HEADER, false);

$response = curl_exec($ch1);
curl_close($ch1);

$XML_response = @str_replace('dxp:','',$response);
$XML_object = simplexml_load_string($XML_response);

$data = '';
$label = '';
foreach($XML_object->entry as $m)
{
$tmp = @split('ga:browser=', $m->title);
if($label == "")
{
$label .= $tmp[1] . ' (' . $m->metric['value'] . ')';
$data .= $m->metric['value'];
}
else
{
$label .= '|' . $tmp[1] . ' (' . $m->metric['value'] . ')';
$data .= ',' . $m->metric['value'];
}
}

echo '
<img src="http://chart.apis.google.com/chart?
chs=400x150
&amp;chd=t:'
. $data . '
&amp;cht=p3
&amp;chdl='
. $label . '"
alt="Sample chart" />
'
;

?>

Ce qui permet d’obtenir ce genre de graphique :

API Google Analytics - Graphique des navigateurs du jour

API Google Analytics - Graphique des navigateurs du jour 2

Résultat très honorable pour la très faible complexité de ce code. J’ai donc mon graphique des navigateurs sur la journée. Le nombre entre parenthèses correspond au nombre de visites avec le dit navigateur.

Statistiques par page

Je voulais pouvoir voir mes statistiques par page, en administrateur seulement. C’est-à-dire avoir à côté de mes liens d’édition et pour chaque article, le nombre de fois que mon article a été vu aujourd’hui et combien il y a eu de visites uniques.

C’est maintenant chose faite, et c’est facile !

<?php

$email = '********@********';
$passwd = '********';
$ids = '********';

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "https://www.google.com/accounts/ClientLogin");
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

$data = array('accountType' => 'GOOGLE',
'Email' => $email,
'Passwd' => $passwd,
'source'=>'CLI_GAnalytics',
'service'=>'analytics');

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

$hasil = curl_exec($ch);
$hasil = @split("Auth=", $hasil);
$auth = $hasil[1];

curl_close($ch);

$uri = $_SERVER['REQUEST_URI'];

$current_date = date('Y-m-d', time());
$ch1 = curl_init("https://www.google.com/analytics/feeds/data?ids=ga:" . $ids . "&metrics=ga:pageviews&dimensions=ga:pagePath&filters=ga:pagePath%3D%3D" . $uri . "&start-date=" . $current_date . "&end-date=" . $current_date);

$header[] = 'Authorization: GoogleLogin auth=' . $auth;

curl_setopt($ch1, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch1, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch1, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch1, CURLOPT_HEADER, false);

$response = curl_exec($ch1);
curl_close($ch1);

$XML_response = @str_replace('dxp:','',$response);
$XML_object = simplexml_load_string($XML_response);

$pv = $XML_object->entry->metric['value'] ? $XML_object->entry->metric['value'] : 0;

echo 'Vue ' . $pv . ' fois aujourd\'hui.';

?>

J’ai donc mon résultat de la forme :

Vue 10 fois aujourd'hui.

Ce qu’il fallait faire pour récupérer les informations de la page courante et ce qui fait l’intérêt de l’article :

$ch1 = curl_init("https://www.google.com/analytics/feeds/data?ids=ga:" . $ids . "&metrics=ga:pageviews&dimensions=ga:pagePath&filters=ga:pagePath%3D%3D" . $uri . "&start-date=" . $current_date . "&end-date=" . $current_date);

Ou plus exactement ajouter la dimension pagePath et filtrer sur cette dimension comme ceci :

&filters=ga:pagePath%3D%3D" . $uri . "

L’URI de la page se récupère avec :

$_SERVER['REQUEST_URI']

On récupère par exemple : /index.html.

Pour avoir la même chose avec les visites uniques, il suffit de modifier le metrics en uniquepageviews.

L’utilisation des filtres c’est par ici. Tous les metrics et dimensions sont par .

Voilà pour ce petit article, on peut faire des choses très puissantes, très simplement, on peut imaginer améliorer son référencement automatiquement en récupérant les infos Google Analytics et en agissant en fonction, cela en toute transparence pour le visiteur comme pour l’utilisateur.

  • Print
  • Digg
  • StumbleUpon
  • del.icio.us
  • Facebook
  • Twitter
  • Google Bookmarks
  • FriendFeed
  • LinkedIn
  • MySpace
  • Netvibes
  • PDF
  • Ping.fm
  • RSS
  • Technorati
  • viadeo FR
  • Wikio
  • Yahoo! Buzz

Related Posts

Cet article a été publié dans Ancien blog avec les mots-clefs : , , , , , , , , . Bookmarker le permalien. Les commentaires et les trackbacks sont fermés.

2 commentaires

  1. Le 24 août 2010 à 13 h 03 min | Permalien

    Salut,

    Nikel ton tuto !

    Par contre petit soucis: je souhaites faire un graph en barre qui représente les visiteurs nouveaux sur une période donnée.

    Le soucis c’est que si il n’ya a pas de visiteur un jour, le flux xml n’a aucune donnée pour ce jour là (même pas un zéro). Donc c’est problématique et obligé de faire un traitement avant l’affichage :(

    Est ce que tu as une idée (de config sur le flux) pour avoir des zéros ?

    • Le 15 septembre 2010 à 20 h 52 min | Permalien

      Bonjour,

      Oui j’ai eu ce problème, il faut construire le tableau en indiquant des 0 aux bons endroits après récupération depuis l’API.

      Cordialement.

Un trackback

  1. [...] et passionné ! #Symfony #Diem #Git #Nginx #WebPerfsAller au contenuCV – Curriculum Vitae« API Google Analytics Round 2 – Graphiques et statistiques par pageSEO Google : Mythes et réalités d’hier et d’aujourd’hui Referencement Google SEO Guide [...]