Comment puis-je récupérer Google Analytics des données de rapport à l'aide de la version 3 de leurs .NET api?

StackOverflow https://stackoverflow.com/questions/8995756

Question

J'ai essayé de récupérer les rapports Google analytics à l'aide de leur condition .NET api et ont été vraiment à me gratter la tête sur la façon dont je l'ai fait récupérer quoi que ce soit à l'aide de la version la plus récente, v3, qui est disponible ici: http://code.google.com/apis/analytics/docs/gdata/v3/gdataLibraries.html

Par exemple, j'aimerais récupérer une requête de rapport comme celui-ci: https://www.google.com/analytics/feeds/data?dimensions=ga:browser&end-date=2012-01-25&ids=ga:ACCOUNTID&metrics=ga:visits&start-date=2011-12-25

Je suis en mesure de retourner les rapports un peu fine à l'aide de la version 2 qui utilise GData, mais a été l'espoir d'obtenir la version 3 dans le cas de la version 2 a été abandonné, mais il a beaucoup de difficulté à voir aussi significatif de la documentation semble être obsolète ou non-existant et je n'ai pas été en mesure de trouver des exemples.

Était-ce utile?

La solution

Nous venons de mettre à jour notre service d'analyse pour utiliser V3.0 de l'API que V2.3 est maintenant obsolète, il existe un guide de migration sur Google https://developers.google.com/analytics/resources/articles/gdata-migration-Guide qui pourrait aider.

J'ai essayé d'utiliser l'API Google Dotnet API http://code.google. com / p / google-API-DotNet-Client / qui prend en charge la V3 mais a abandonné car il y a un manque de documentation et d'échantillons. Nous appelons l'API à travers un Net.Httpwebrequest plus facile que d'essayer de déterminer ce qui se passe dans l'API.

pour v3 votre appel devrait être de https://www.googleapis.com/analytics/v3/data/ga?dimensions=ga:Browser& ;end-date=2012-01-25&ids=ga:Accountd&metrics=ga:visits&start -Date= 2011-12-25

Autres conseils

C'est maintenant possible et facile à faire avec la dernière version de l' .NET API (v1.3.0.15233).Il n'y a pas d'exemple mais qui a été libéré, mais vous pouvez utiliser l'exemple de Tâche de comme un modèle de requête GA données.

Voici ce que vous devez ajouter/modifier pour faire de l'échantillon de travail du projet pour GA.

Déclarer une instance de la AnalyticsService

private static AnalyticsService _analyticsService;

Modifier la portée de Scopes.Analytics

Il y a une variable scope déclarée à l'intérieur de la méthode GetAuthorization.Changement de

string scope = TasksService.Scopes.TasksReadonly.GetStringValue();

pour

string scope = AnalyticsService.Scopes.Analytics.GetStringValue();

Initialiser votre GA service

if (_analyticsService == null)
{
    _analyticsService = new AnalyticsService(new BaseClientService.Initializer()
    {
        Authenticator = _authenticator = CreateAuthenticator();  
    });
}

Création d'une Requête

C'est comment vous pouvez interroger un GA profil

// make a request
var request = _analyticsService.Data.Ga.Get(
    "ga:12345678", 
    "2013-01-01",
    "2013-05-08", 
    "ga:visits,ga:bounces,ga:timeOnSite,ga:avgTimeOnSite");
// run the request and get the data                
var data = request.Fetch();

Vous remarquerez qu'il y a quatre arguments requis pour la GetRequest similaire à ce qui est défini dans la Doc de l'API.Vous pouvez visite de la requête de l'explorateur pour connaître la validité des paramètres pour l'utilisation avec le .NET DE L'API.

Après plusieurs jours de recherche d'accès aux analycs, est un cadre de projet de console 3.5.

* Devez avoir un projet de console APIS Google avec le service API d'analyse ACI activé.
* Dans simple accès API doit générer une nouvelle clé pour l'ID client pour les applications installées.
* Téléchargez et ajoutez une référence à google.apis.analytics.v3.dll
* Téléchargez et ajoutez une référence à google.apis.authentition.oauth2.dll
* Téléchargez et ajoutez une référence à google.apis.dll
* Télécharger et ajouter une référence à newtonsoft.json.net35.dll
* Téléchargez et ajoutez une référence à dotnetopenauth.dll

et enfin implémenter le code suivant:

private const string Scope = "https://www.googleapis.com/auth/analytics.readonly";
    static void Main(string[] args)
    {
        try
        {
            var provider = new NativeApplicationClient(GoogleAuthenticationServer.Description);
            provider.ClientIdentifier = "Your_Client_ID";
            provider.ClientSecret = "Your_Client_Secret";
            var auth = new OAuth2Authenticator<NativeApplicationClient>(provider, GetAuthentication);
            var asv = new AnalyticsService(auth);
            var request = asv.Data.Ga.Get("ga:Your_TrackingID", "2013-08-05", "2013-08-05", "ga:visitors");
            request.Dimensions = "ga:visitorType";
            var report = request.Fetch();
            var rows = report.Rows;
            var newVisitors = rows[0];
            var returnVisitors = rows[1];
            Console.WriteLine(newVisitors[0] + ": " + newVisitors[1]);
            Console.WriteLine(returnVisitors[0] + ": " + returnVisitors[1]);
            int newV = Int32.Parse(newVisitors[1]);
            int retV = Int32.Parse(returnVisitors[1]);
            int sum = newV + retV;
            Console.WriteLine("Total:  " + sum);
        }

        catch(Exception ex){
            Console.WriteLine("\n Error: \n" + ex);
            Console.ReadLine();
        }

    }

private static IAuthorizationState GetAuthentication(NativeApplicationClient arg)
    {
        IAuthorizationState state = new AuthorizationState(new[] { Scope });
        state.Callback = new Uri(NativeApplicationClient.OutOfBandCallbackUrl);
        Uri authUri = arg.RequestUserAuthorization(state);
        System.Diagnostics.Process.Start(authUri.ToString());
        Console.Write("Paste authorization code: ");
        string authCode = Console.ReadLine();
        return arg.ProcessUserAuthorization(authCode, state);
    }

J'espère que cela aide.

J'ai posté des instructions étape par étape sur la façon de procéder ici: API Google V3 Beta Comment

Exemple complet complet avec compte de service.

Installez le paquet Nuge Google.apis.analytics.v3.

//based on https://github.com/LindaLawton/Google-Dotnet-Samples/tree/master/Google-Analytics

using System;
using System.Threading.Tasks;

using System.Security.Cryptography.X509Certificates;
using Google.Apis.Analytics.v3;
using Google.Apis.Analytics.v3.Data;
using Google.Apis.Auth.OAuth2;
using Google.Apis.Util;
using System.Collections.Generic;
using Google.Apis.Services;

namespace GAImport
{


    class Program
    {
        static void Main(string[] args)
        {
            string[] scopes = new string[] { AnalyticsService.Scope.AnalyticsReadonly }; 

            var keyFilePath = @"path\to\key.p12";    
            var serviceAccountEmail = "someuser@....gserviceaccount.com";  

            //loading the Key file
            var certificate = new X509Certificate2(keyFilePath, "notasecret", X509KeyStorageFlags.Exportable);
            var credential = new ServiceAccountCredential(new ServiceAccountCredential.Initializer(serviceAccountEmail)
            {
                Scopes = scopes
            }.FromCertificate(certificate));
            var service = new AnalyticsService(new BaseClientService.Initializer()
            {
                HttpClientInitializer = credential,
                ApplicationName = "Analytics API Sample",
            });
            var request = service.Data.Ga.Get("ga:1234567", "30daysAgo", "yesterday", "ga:sessions");
            request.MaxResults = 1000;
            var result = request.Execute();
            foreach (var headers in result.ColumnHeaders)
            {
                Console.WriteLine(String.Format("{0} - {1} - {2}", headers.Name, headers.ColumnType, headers.DataType));
            }

            foreach (List<string> row in result.Rows)
            {
                foreach (string col in row)
                {
                    Console.Write(col + " "); 
                }
                Console.Write("\r\n");

            }


            Console.ReadLine();
        }

    }
}

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top