Google Analytics API

Ce plugin permet d’utiliser l’API Google Analytics V4, en PHP, afin de récupérer des statistiques de votre site SPIP.

Pourquoi utiliser Google Analytics ?

-  il enregistre bien plus d’informations que les statistiques de visites de SPIP, et offre des rapports bien plus détaillés.
-  gratuit
-  cela permet de désactiver le système de visites sur SPIP, qui affecte les performances de votre site, que ce soit lors de l’enregistrement ou de la consultation de rapports complexes.

Google Analytics offre des interfaces très flexibles pour consulter les statistiques. Pourquoi installer une librairie en PHP sur votre site ?

-  Vous pouvez utiliser les analytics dans vos squelettes.
-  Vous pouvez enregistrer certaines informations dans votre base de données, de manière automatisée.

Ainsi, avec ce plugin, vous pourrez accéder à des données Google Analytics dans vos squelettes, que ce soit pour afficher des informations sur votre site public ou créer des rapports personnalisés dans votre espace privé. Vous pourrez même enregistrer des statistiques dans votre base de données de manière automatisée. [1]

Nous allons présenter l’utilisation de ce plugin, ainsi que donner des conseils pour en tirer un plus grand parti.

Pourquoi NE PAS utiliser Google Analytics ?

La gratuité du service pour le webmaster provient du fait que toutes les informations collectées sont utilisées pour cibler les offres publicitaires.

Sachez que d’autres offres sont disponibles si vous souhaitez éviter le grand Google, tel que les stats open source Piwik (pour lesquelles il y a un plugin spip-piwik).

Installation

IMPORTANT : l’utilisateur qui va activer le plugin doit avoir un compte Google avec accès aux analytics du site. Nous considérons que vous êtes familier avec Google Analytics et que votre site est déjà associé à ce système. De plus, il faudra peut-être créer un compte Google Developer, afin de pouvoir créer une application. Je ne sais plus comment on fait car je l’ai fait il y a plusieurs années, mais cela n’est pas compliqué (merci de m’aider à mettre a jour cette documentation).

Il faut tout d’abord créer une application Google qui va permettre la consultation de ces analytics. Ensuite il faudra créer un token d’autorisation, qui sera transformé automatiquement par le plugin en token a durée de vie illimitée (Refresh Token).

Pour créer une application, il faut suivre les étapes de la section 1 de cette documentation. Je récapitule ici les étapes en Français :

1. Si vous ne possédez pas encore de projet Google API, créez un nouveau projet.

2. créez une application de type « web server » ou « web application ». Sélectionnez l’API « Google Analytics Reporting », en utilisant les données de l’utilisateur.

3. Créez des credentials (identifiants), en les nommant, et comme page de redirection (section « restrictions ») : http(s)://votredomaine/ecrire/?exec=oauth2callback.

NOTE : Si vous venez depuis la page de credentials, il faut sélectionner « Oauth Client ID » quand cela vous est demandé :

3. Si cela vous est demandé, la personnalisation de l’écran de connexion a peu d’importance. Mettez juste le minimum nécessaire (product name).

4. générez des codes d’accès à cette application et téléchargez le fichier json qui contient ces codes d’accès

NOTE : si vous souhaitez télécharger le json depuis la page de credentials, cliquez sur le lien a droite :

Il faut ensuite se rendre dans la page de configuration du plugin SPIP dans l’espace privé : /ecrire/ ?exec=configurer_google_analytics_api , et y enregistrer le contenu du fichier json.

L’identifiant de la vue de votre site sur Google Analytics peut être trouvé facilement dans le query explorer de Google Analytics.

Une fois toutes ces informations remplies, il ne reste qu’à générer un Token de connexion, dans la seconde partie de la page de configuration.

Durant la connexion, une page de transition va vous demander quel compte Google vous souhaitez utiliser (choisissez le compte qui a accès aux analytics de votre site). Une seconde étape va vous demander si vous autorisez l’application à avoir un accès en lecture a Google Analytics. Ceci est normal et vous pouvez accepter.

Pour tester si votre application fonctionne, rendez-vous sur cette page, où vous devriez voir les pages les plus consultées sur votre site : /ecrire/?exec=best_pages_skel

Utilisation

Tout d’abord, lorsque vous mettez en place un rapport, il est très pratique d’utiliser le query explorer pour comparer vos résultats.

De plus, la documentation de la fonction batchGet() vous apportera aussi beaucoup d’informations sur les paramètres à passer dans vos requêtes, notamment la syntaxe des filtres, de même que la page d’exploration des dimensions et metrics.

Un rapport d’analytics utilise (pour le moment) les paramètres suivants :

-  une ou plusieurs dimensions (valeurs associées aux pages)
-  une ou plusieurs metrics (quantités de mesure)
-  un ou plusieurs filtres (optionnel, aucun filtre par défaut)
-  une ou plusieurs périodes (optionnel, par défaut 7daysAgo -> yesterday)
-  un ordre de tri (optionnel)

D’autres paramètres existent dans l’API, et seront peut-être implémentés dans ce plugin à l’avenir.

IMPORTANT : A l’heure actuelle, les filtres fonctionnent avec l’opérateur logique « ET ». C’est à dire que le rapport ne contiendra que les résultats qui sont compatibles avec TOUS les filtres. De plus, les filtres ne s’appliquent qu’aux dimensions pour le moment.

1. Squelette SPIP

Afin d’afficher le résultat d’un rapport Google Analytics dans un squelette, il suffit de créer un tableau avec tous les paramètres du rapport, et y appliquer le filtre « get_analytics ». Vous pouvez jeter un oeil a un squelette exemple dans le répertoire du plugin : /prive/exec/best_pages_skel.html

Voici l’URL pour voir le resultat : /ecrire/?exec=best_pages_skel

Nous voyons ici deux rapports légèrement différents. Le premier est le filtre get_analytics appelé avec le paramètre true, qui indique qu’on veut le résultat dans un tableau HTML simple.

[(#GET{conf}|get_analytics{true})]

Dans le cas où vous voulez vous-même manipuler le rapport, vous pouvez faire comme le second appel, sans le paramètre true.

[(#GET{conf}|get_analytics)]

Ainsi le plugin retourne le rapport sous forme d’un tableau PHP, consultable dans le squelette avec la boucle DATA. Souvenez-vous bien que chaque ligne va contenir les dimensions en premier, puis les metrics, et dans l’ordre dans lequel les paramètres ont été déclarés.

2. Code PHP

Vous pouvez aussi créer un rapport directement en PHP, par exemple si vous voulez interagir avec des données non-accessibles depuis les squelettes, ou pour générer des rapports en tâche de fond via le job_queue de SPIP. Le principe est similaire à la version « squelette » : il suffit de créer un tableau avec les paramètres nécessaires, et passer ce tableau en paramètre à la fonction get_analytics().

$report = get_analytics($conf);

Un exemple d’utilisation (qui produit les mêmes rapports que l’exemple de type « squelette ») peut être trouvé dans le répertoire du plugin :

/exec/test_php_call.php

Voici l’URL pour voir le résultat :

/ecrire/?exec=test_php_call

Utilisation étendue

Afin de tirer le meilleur parti de ce plugin, il est fortement recommandé d’utiliser des variables personalisées dans vos pages pour Google Analytics.

Il est en effet intéressant d’indiquer à Google Analytics quelques informations supplémentaires, telles l’auteur d’un article, ou l’identifiant SPIP de l’objet de la page (article, rubrique, etc.).

Il est très facile de récupérer la liste des URLs les plus performants du site en terme de visites. Il n’est toutefois pas si simple de faire l’association entre ces URLs et les objets de votre site.

En revanche, si vous associez un identifiant à vos pages, grâce à une variable personnalisée, alors vous pourrez utiliser cet identifiant dans une boucle SPIP et exploiter cette information pour créer un bloc dans vos pages.

Voici une façon simple d’ajouter la variable id_article dans votre squelette d’article (dans la balise HTML « head », si possible) :

<script>
var ga_id_objet = "#ID_ARTICLE";
var ga_objet = "article";
</script>

Ensuite il vous suffira d’ajouter ces variables JS en tant que variables personnalisées dans la page de configuration de votre google analytics :

Et aussi, rajouter ces variables dans le code d’initialisation google analytics de vos squelettes.

ga('set', 'dimension1', ga_id_objet);
ga('set', 'dimension2', ga_objet);

Notre utilisation de ce plugin est très simple et intéressante a la fois : un bloc « Article les plus populaires », ou « trending articles », qui affiche les 10 articles du site les plus visités ces dernières 24-48h :

[(#SET{dimensions,[(#ARRAY{0,"ga:dimension1"})]})]
[(#SET{metrics,[(#ARRAY{0,[(#ARRAY{"expression","ga:pageviews","alias","Page Views"})]})]})]
[(#SET{dateRanges,[(#ARRAY{0,[(#ARRAY{"startDate","yesterday","endDate","today"})]})]})]
[(#SET{orderBys,[(#ARRAY{"FieldName","ga:pageviews","OrderType","VALUE","SortOrder","DESCENDING"})]})]
[(#SET{pageSize,10})]
[(#SET{filters,[(#ARRAY{0,[(#ARRAY{"dimensionName","ga:dimension2","operator","EXACT","expression","article"})]})]})]
[(#SET{conf,[(#ARRAY{"dimensions",[(#GET{dimensions})],"metrics",[(#GET{metrics})],"dateRanges",[(#GET{dateRanges})],"orderBys",[(#GET{orderBys})],"pageSize",[(#GET{pageSize})],"filters",[(#GET{filters})]})]})]

[(#SET{report,[(#GET{conf}|get_analytics)]})]

<BOUCLE_browse_report(DATA){source table, #GET{report}}>
	[(#SET{id_article,[(#VALEUR|table_valeur{0})]})]
        [(#SET{n_visites,[(#VALEUR|table_valeur{1})]})]
	<INCLURE{fond=bloc_article}{id_article=#GET{id_article}}>	
</BOUCLE_browse_report>

Ce code nous permet de récupérer la liste des 10 articles les plus visités, en demandant comme dimension la « dimension1 » (id_objet), comme mesure (metrics) les pageviews, et en nous assurant de filtrer les pages avec « dimension2 » (objet) = « article ». Le rapport va retourner un ensemble de lignes, dont la première valeur est la dimension (id_objet) et la seconde est le metrics (pageviews). Nous utilisons enfin cet id_article dans une boucle SPIP pour générer un bloc.

Notes

[1Un autre plugin SPIP existe pour générer les stats Google Analytics : cet autre plugin utilise le pipeline du head de la page pour insérer le tag de Google Analytics, au lieu de l’insérer dans les squelettes. Par comparaison, le plugin Google Analytics API présenté ici permet d’utiliser l’API de Google afin de récupérer les statistiques des pages du site dans un tableau, que l’on peut utiliser dans une boucle SPIP ou dans du code PHP. Cela permet, entre autres, de créer automatiquement un « refresh token », soit un token à temps de vie illimité pour effectuer les connexions a l’API (sans cela, c’est un peu prise de tête a faire soi-même en PHP car plutôt mal documenté). Ensuite on a déjà les fonctions de connexions écrites et il suffit d’entrer les paramètres des requêtes. Ces 2 plugins sont donc très différents.

Discussion

2 discussions

  • 5

    Bonjour,

    Pourquoi ce plugin n’est pas compatible SPIP 3.1 et 3.2 ?

    • Bonjour,

      Il n’y a aucun soucis avec la compatibilite. Je pensais juste qu’en mettant « 3.0 » cela sous entendait « 3.* », ce qui n’est pas le cas (un tag « 3.* » serait pas mal, au passage). J’ai mis a jour l’article. Merci de me l’avoir signale.

    • Bonjour :-)
      Il y a une erreur dans paquet.xml
      compatibilite="[2.0.0 ;3.*]
      N’est pas bon, car :
      -  La borne maxi doit être sous la forme 3.2.*, la raison, est uniquement dû au fait de ne pas avoir sur la zone des plugins qui seront dit compatible avec une version de spip qui sortirait dans 10, alors que cela ne sera pas forcément le cas :-)

      -  La borne mini doit être 3.0.0 car comme dans le plugin, il n’y a qu’un fichier paquet.xml sans plugin.xml, alors les spip avant la version 3.0.0 ne peuvent utiliser se plug, car ne connaissant pas « paquet.xml »

      C’est pour cela qui faudrait mettre, en faisant un up de z+1 minimum concernant la version, pour que ceux utilisant déjà le plug n’est pas de problème :-) :
      compatibilite=« [3.0.0 ;3.2.*] »

      Franck

    • OK, mais je ne garantis pas d’etre au taquet pour mettre a jour les fichiers a chaque fois que la version de SPIP gagnera une decimale...

      J’ai ajoute le fichier plugin.xml, mais je ne l’ai pas teste car je n’ai pas de SPIP 2 sous la main.

    • Hello :-)
      C’est pour cela que pour ne pas te prendre la tête, le mieux était de faire au plus simple et ne pas mettre le plugin compatible spip 2.0.0
      Un unique fichier paquet.xml sans de plugin.xml, avec la borne mini 3.0.0 voir 3.1.0 ou 3.2.0 et avec la borne max 3.2.* était déjà très bien :-)

    • Arf :-(
      Je n’avais pas fait attention, mais il y a un autre truc à savoir...
      spip ne connait les * que depuis spip 3.0.0, c’est pour cela que si dans paquet.xml il faut mettre par exemple 3.2.* comme borne max
      Dans plugin.xml, il faut mettre 3.2.99 car spip 2.0.0 ne saura pas lire [2.0.0 ;3.2.*]

      Donc non seulement, il faut bien faire attention à mettre la même version du plugin dans paquet.xml et plugin.xml (car il s’agit du même plug)

      Mais il faut faire attention à cette subtilité qui va disparaitre avec le temps, car il y a de moins en moins de plugin compatible spip 2
      Franck

    Répondre à ce message

  • 1

    Bonjour,

    Est-ce qu’il serait possible de mettre ce plugin sur la Zone ?

    Merci

    • Nous n’y voyons aucun inconvenient. Il faut juste qu’on se donne la peine de comprendre comment ca marche et de s’y inscrire... On va essayer quand on aura un moment de libre.

    Répondre à ce message

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom