Как мне получить данные отчета Google Analytics с помощью v3 их .NET api?

Я пытался получить отчеты аналитики Google, используя предоставленный ими .NET API, и действительно ломал голову над тем, как я на самом деле получаю что-либо, используя новейшую версию v3, которая доступна здесь: http://code.google.com/apis/analytics/docs/gdata/v3/gdataLibraries.html < / а>

Например, я хотел бы получить такой запрос отчета: https://www.google.com/analytics/feeds/data?dimensions=ga:browser&end-date=2012-01-25&ids=ga:ACCOUNTID&metrics=ga:sessions&start-date=2011-12-25

Я могу без проблем возвращать отчеты, используя версию 2, которая использует GData, но надеялся запустить версию 3 в случае, если версия 2 устарела, но у меня возникли проблемы с тем, что значимая документация кажется устаревшей или несуществующей и Мне не удалось найти никаких примеров.


person pantryfight    schedule 24.01.2012    source источник
comment
Действительно? Мой вопрос был опубликован за 3 месяца до того, на который вы указали ссылку.   -  person pantryfight    schedule 12.07.2015


Ответы (5)


Мы только что обновили нашу службу аналитики, чтобы использовать API версии 3.0, так как версия 2.3 теперь устарела, на google есть руководство по миграции https://developers.google.com/analytics/resources/статьи/gdata-migration-guide, которые могут помочь.

Я пробовал использовать Google dotnet API http://code.google.com/p/google-api-dotnet-client/, который поддерживает v3, но отказался от него из-за отсутствия документации и образцов. Мы вызываем api через net.httpwebrequest, что было проще, чем пытаться выяснить, что происходит в API.

Для версии 3 ваш вызов должен быть https://www.googleapis.com/analytics/v3/data/ga?dimensions=ga:browser&end-date=2012-01-25&ids=ga:ACCOUNTID&metrics=ga:посещений&start-date=2011-12-25

person munnster79    schedule 15.06.2012
comment
не могли бы вы поделиться этим кодом где-нибудь? gist.github.com или, может быть, сообщение в блоге? Благодарность - person Andrew Bullock; 25.06.2012
comment
Хотя мне все еще хотелось бы знать, как это сделать с помощью предоставленной Google фреймворка, я приму это как ответ, поскольку ни у кого другого, похоже, нет никаких идей. Спасибо за ваши усилия. - person pantryfight; 25.07.2012

Теперь это возможно и легко сделать с помощью последней версии. NET API (v1.3.0.15233). Хотя такого примера нет, но вы можете использовать образец задачи в качестве шаблона для запроса данных GA.

Вот что вам нужно добавить / изменить, чтобы этот образец проекта работал в GA.

Объявите экземпляр AnalyticsService

private static AnalyticsService _analyticsService;

Измените область действия на Scopes.Analytics

Внутри метода GetAuthorization объявлена ​​переменная scope. Измените это с

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

to

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

Инициализируйте свой сервис GA

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

Выполнение запроса

Вот как вы можете запросить профиль GA

// 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();

Вы заметите, что есть четыре обязательных аргумента для GetRequest, подобных тому, что определено в API Doc. Вы можете посетить обозреватель запросов, чтобы узнать допустимые метрики для использования с .NET API. .

person von v.    schedule 08.05.2013
comment
устарели ли старые файлы Google.GData.Analytics.dll для звонков? что происходит с кодом, написанным с использованием этих dll для выборки данных? - person user20358; 24.07.2013

После нескольких дней поиска получить доступ Analitycs, это платформа проекта консоли 3.5.

* Должен ли у вас быть проект консоли Google API с активированной службой Analytics API.
* В Simple API Access должен сгенерировать новый ключ для идентификатора клиента для установленных приложений.
* Загрузите и добавьте ссылку на Google.Apis.Analytics.v3.dll
* Загрузите и добавьте ссылку на Google.Apis.Authentication.OAuth2.dll
* Загрузить и добавить ссылку на Google.Apis.dll
* Загрузить и добавить ссылку на Newtonsoft.Json.Net35.dll
* Загрузить и добавить ссылку на DotNetOpenAuth.dll

И, наконец, реализуйте следующий код:

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);
    }

Надеюсь это поможет.

person Rick    schedule 27.09.2013

Я разместил пошаговые инструкции, как это сделать, здесь: Google V3 Beta API How To

person LiquaFoo    schedule 10.10.2013

Дополнительный полный пример со служебной учетной записью.

Установите пакет nuget 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 = "[email protected]";  

            //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();
        }

    }
}
person Hodza    schedule 13.12.2016