La boîte à Tutoriels de Christopher PECAUD

Top

ACCEDER A GOOGLE ANALYTICS AVEC LES API GOOGLE AVEC C#

Laisser un commentaire

SOMMAIRE

I Introduction
II Prérequis
III Codage de l’application
1. L’interface de l’application
2. Un petit descriptif sur les éléments de l’API utilisés
3. Se connecter à son compte Google Analytics
4. Envoyer une requête de récupération des comptes Analytics
5. Envoi d’une requête d’extraction de données
6. Récupération du résultat de la requête
IV CONCLUSION

I Introduction

Dans ce tutoriel, je vais vous montrer comment accéder à vos données issues de votre compte Google Analytics afin d’afficher les résultats d’une requête simple. En effet on va demander à Google Analytics d nous retourner le nombre de pages vues par type de navigateur. On affichera les données reçues dans une DataGridView. Vous verrez dans ce tutoriel les différentes apis nécessaires, mises à votre disposition par Google, pour accéder à vos comptes puis à vos données.

II Prérequis

Dans un premier temps il est nécessaire de télécharger les différents fichiers mis à disposition par Google, nécessaires pour accéder à ses données. Pour ce faire il faut aller sur le site de Google spécialement dédié à la plateforme .Net et télécharger le package de bibliothèques lié à la Google Data API, c’est-à-dire ici.

Une fois téléchargé, il suffit d’exécuter le package d’installation .msi et de suivre les instructions affichées à l’écran. Cette procédure ne pose aucun problème, donc nous ne la détaillerons pas plus. A noter que par défaut l’installateur vous installera tous les fichiers ainsi que les exemples dans le répertoire « C:\Program Files (x86)\Google »

La prochaine étape consiste à créer un projet dans Visual Studio. Pour information, pour ce tutoriel j’ai utilisé Visual C# Express 2010.

Il faut ensuite ajouter une référence vers les 3 bibliothèques de fonctions suivantes :

  • Google.GData.Client pour récupérer les données du compte de connexion;
  • Google.GData.Extensions ;
  • Google.GData.Analytics pour récupérer les données de son compte google Analytics.

Toutes ces bibliothèques se trouvent dans le répertoire suivant : « C:\Program Files (x86)\Google\Google Data API SDK\Redist »

Dans l’assistant d’ajout de référence il suffit d’utiliser l’onglet « Parcourir » pour ensuite atteindre ce répertoire et ajouter les 3 bibliothèques voulues.

Vous pouvez voir que d’autres bibliothèques permettant d’accéder à d’autres comptes Google existent. Elles seront utiles si par exemple vous voulez accéder à d’autres comptes comme Google Calendar par exemple.

Voilà nous sommes prêts à commencer à coder notre petit exemple…

II Codage de l'application

Alors comme je vous le disais en introduction cette application va vous montrer :

  • Comment accéder à votre compte Google avec vos identifiants ;
  • Comment récupérer des données issues de l’application Analytics.

Dans cet exemple nous allons récupérer le nombre de visites par page et afficher ces données dans une DataGridView.

1. L'interface de l'application

Voici à quoi correspondra l’application visuellement.

image montrant l'interface graphique finale de l'application

Comme vous pouvez les constater cette interface est assez simple à réaliser et vous pouvez la personnaliser comme bon vous semble. Sur cette interface, j’y ai placé les composants suivants :

  • Une GroupBox, deux labels et deux textBox ainsi qu’un bouton pour la zone d’identification en haut à gauche ;
  • Un label et une listbox pour récupérer les sites pour lesquels vous avez un compte GoogleAnalytics de déployer ;
  • Une DataGridView pour afficher les résultats de notre requête envoyée à l’application Google Analytics.

2. Un petit descriptif sur les éléments de l'API utilisés

Maintenant que l’interface est en place il est temps de commencer à parler un peu plus de l’API Google Data, qui va nous permettre de récupérer des données. Vous avez vu que nous avons ajouté trois références. Chacune d’elles a un rôle spécifique :

  • Google.gdata.client.dll permet d’établir une connexion avec l’API ;
  • Google.gdata.extensions.dll est requis pour interactions avec les deux autres bibliothèques.
  • Google.gdata.Analytics.dll qui permet d’interagir avec votre compte Google Analytics
  • pour récupérer des données via des requêtes.

3. Se connecter à son compte Google Analytics

La première chose à réaliser est de se connecter à son compte Google Analytics afin de pouvoir ensuite lui envoyer une requête d’extraction de données. Pour établir une connexion avec notre compte, vous aurez besoin d’instancier un objet de type AnalyticsService, celui-ci va vous permettre d’établir la connexion avec le service Google Analytics. Vous avez juste besoin de vos identifiants Google pour pouvoir effectuer cette opération. Voilà le code permettant d’effectuer cette opération :

            string userName = this.txtLogin.Text;
            string pwd = this.txtPwd.Text;
            AnalyticsService service = new AnalyticsService("AnalyticsSampleApp");
            if (!string.IsNullOrEmpty(userName)) {
                service.setUserCredentials(userName, pwd);
            }

Comme vous pouvez le constater, on utilise la méthode SetUserCredentials avec les identifiants pour envoyer la requête de connexion.

4. Envoyer une requête de récupération des comptes Google Analytics

Une fois connecté à votre compte utilisateur Google, il faut envoyer une requête pour récupérer le nom des comptes gérés par Google Analytics (en ce qui me concerne wwww.pecaudchristopher.com). Afin de réaliser cette opération il suffit d’instancier un objet de type AccountQuery qui va nous servir à envoyer une demande au serveur. Nous aurons besoin aussi de créer un objet de type flux AccountFeed qui nous permettra de récupérer les résultats de notre requête. Pour récupérer chaque élément inclus dans le flux on crée à chaque itération un objet de type AccountEntry qui va nous donner les informations sur les sites (comptes) gérés par Analytics. Voici le code qui va nous permettre de récupérer ces informations :

            AccountQuery query = new AccountQuery();
            AccountFeed accountFeed = service.Query(query);
            ProfileId = new String[accountFeed.Entries.Count];
            int itemIndex = 0;
            foreach (AccountEntry entry in accountFeed.Entries)
            {

                this.listBox.Items.Add(entry.Title.Text);
                this.ProfileId[itemIndex] = entry.ProfileId.Value;
                itemIndex += 1;
            }

 A noter que je garde une référence de ces comptes dans une variable ProfileID de type tableau de string qui va nous permettre de récupérer le nom du compte sélectionné par l’utilisateur lorsque celui-ci cliquera sur une des lignes de la listBox. On peut noter aussi que c’est l’id du compte que l’on récupère à ce moment-là.

5. Envoi d'une requête d'extraction de données

Maintenant que l’on a récupéré le nom des comptes gérés par Google on aimerait bien récupérer quelques statistiques sur ce compte, comme dans l’application elle-même.

Nous allons réaliser cette opération en utilisant une fonction réagissant à l’événement SelectedIndexChanged de la listBox, ce qui va nous permettre de récupérer le ProfileId du compte sélectionné. Pour récupérer des données il faut utiliser un objet de type DataQuery dont le constructeur prend en argument l’adresse par défaut du feed (https://www.google.com/analytics/feeds/data). Nous devons initialiser certaines propriétés de l’objet pour indiquer ce que l’on souhaite obtenir comme résultat :

  • « Ids » : correspond à l’id du compte que l’on a sauvegardé dans notre tableau ProfileId ;
  • « Metrics » : qui correspond aux données que l’on souhaite récupérer ;
  • « Dimensions » : qui correspond aux critères de recherches ;
  • « GAStartDate » : qui correspond à la date de début d’extraction des données ;
  • « GAEndDate » : qui correspond à la date de fin d’extraction des données.

Voici les lignes de code qui permettent de réaliser ce que nous voulons faire, c’est-à-dire extraire le nombre de pages vues par rapport au chemin de chaque page pour les 14 derniers jours :

            string dataFeedUrl = "https://www.google.com/analytics/feeds/data";
            DataQuery query = new DataQuery(dataFeedUrl);
            query.Ids = this.ProfileId[this.listBox.SelectedIndex];
            query.Metrics = "ga:pageviews";
            query.Dimensions = "ga:pagepath";
            query.Sort = "ga:pageviews";
            query.GAStartDate = DateTime.Now.AddDays(-14).ToString("yyyy-MM-dd");
            query.GAEndDate = DateTime.Now.AddDays(0).ToString("yyyy-MM-dd");

Pour plus d’informations sur les requêtes les plus utilisées, je vous invite à aller faire un tour sur cette page .

6. Récupération des résultats de la requête

Nous allons maintenant mettre en forme les résultats qu’Analytics va nous renvoyer. Comme je le disais précédemment nous allons mettre ses différents résultats dans une DataGridView nommée MetricsView.

Comme pour obtenir les données concernant les comptes nous allons créer un objet DataFeed qui va contenir tous les résultats issus de notre requête.

Ensuite il faut récupérer chaque élément de ce flux en créant pour chacun d’eux un objet DataEntry par l’intermédiaire d’une boucle foreach .

Pour inclure ces données dans notre composant nous utilisons la fonction Add de la propriété Rows de celui-ci :

       this.MetricsView.Rows.Add(entry.Dimensions[0].Value, entry.Metrics[0].Value);

Voici la fonction complète répondant à la selection d’un compte dans la listBox :

private void listBox_SelectedIndexChanged(object sender, EventArgs e)
{
   string dataFeedUrl = "https://www.google.com/analytics/feeds/data";
   DataQuery query = new DataQuery(dataFeedUrl);
   query.Ids = this.ProfileId[this.listBox.SelectedIndex];
   query.Metrics = "ga:pageviews";
   query.Dimensions = "ga:pagepath";
   query.Sort = "ga:pageviews";
   query.GAStartDate = DateTime.Now.AddDays(-14).ToString("yyyy-MM-dd");
   query.GAEndDate = DateTime.Now.AddDays(0).ToString("yyyy-MM-dd");
   DataFeed dataFeed = service.Query(query);
   this.MetricsView.Rows.Clear();
   this.MetricsView.Columns.Clear();
   int itemIndex = 0;
   foreach (DataEntry entry in dataFeed.Entries)
    {
       if (itemIndex == 0)
       {
	     this.MetricsView.Columns.Add(entry.Dimensions[0].ToString(), "Page Path");
	     this.MetricsView.Columns.Add(entry.Metrics[0].ToString(), "Page Views");
       }
    this.MetricsView.Rows.Add(entry.Dimensions[0].Value, entry.Metrics[0].Value);
    itemIndex += 1;
    }
}

IV Conclusion

Par l’intermédiaire de ce tutoriel vous avez pu apprendre à utiliser la Google Data API et en particulier dans le cadre de la récupération de données de votre compte Google Analytics. Vous avez pu voir les différentes étapes permettant de réaliser cette opération. Le package fourni par Google pour la plateforme .Net facilite grandement la tâche. Ce tutoriel peut être utilisé comme point de départ pour récupérer des données issues d’autres applications comme Calendar, Youtube, etc...