Pregunta

Google anunció el API de exportación de datos de análisis Hace algunos días, lo que hace que sea mucho más fácil obtener datos de análisis para un sitio. La API debutó con los clientes Java y JavaScript, pero sin soporte directo de .NET (aparte de ir directamente al XML). Sin embargo, parece que la API es similar a las otras API de Google Data, y hay un Cliente .NET para aquellos. ¿Alguien ha intentado usar los componentes en esa biblioteca para llegar a los datos de análisis?

Estoy en el proceso de construir un sitio ASP.NET MVC y pensé en usar Google Analytics para generar listas "más vistas" y cosas así (ya que Google probablemente sea mejor para eliminar solicitudes espurias, robots, etc.) . Si tiene alguna idea sobre esa idea, agradecería mucho escucharlos también.

¿Fue útil?

Solución

Comprobar el tronco De la biblioteca .NET de Google, han agregado soporte de análisis.

También revise su publicación de grupos sobre esto:

http://groups.google.com/group/gdata-dotnet-client-library/browse_thread/thread/2d2eec9103b731c6

y

http://groups.google.com/group/gdata-dotnet-client-library/browse_thread/thread/70c6638734823b8d

Otros consejos

Mira la ubicación de mi publicación aquí:http://www.akamarketing.com/blog/103-introducing-google-analytics-api-with-aspnet-c.html

No está utilizando la biblioteca incorporada que mencionas, pero funciona bastante bien. Toda la API es XML/HTTP, por lo que es bastante útil de usar. Básicamente, le pide a Google una página web y examina la respuesta de lo que necesita.

 //For this you will have to add some dll in your .net project i.e.
 using DotNetOpenAuth.OAuth2;
 using Google.Apis.Authentication.OAuth2;
 using Google.Apis.Authentication.OAuth2.DotNetOpenAuth;
 using Google.Apis.Analytics.v3;
 using Google.Apis.Analytics.v3.Data;
 using Google.Apis.Services;

 public ActionResult GetAnalyticsData(string GroupType, string date_from, string date_to)
    {
        try
        {

            AnalyticsService gas = AuthenticateUser();

            // Creating our query
            DataResource.GaResource.GetRequest r = gas.Data.Ga.Get("ga:88028792", date_from, date_to, "ga:visits, ga:pageviews, ga:users, ga:newUsers, ga:sessions");
            //Hour,Day,Week,Month
            if (GroupType == "Hour") { r.Dimensions = "ga:nthHour"; }
            else if (GroupType == "Day") { r.Dimensions = "ga:nthDay"; }
            else if (GroupType == "Week") { r.Dimensions = "ga:nthWeek"; }
            else if (GroupType == "Month") { r.Dimensions = "ga:nthMonth"; }


            //d: Execute and fetch the results of our query
            GaData d = r.Execute();

            List<TotalsForAllResults> tr = new List<TotalsForAllResults>();
            List<CustomeData> cd = new List<CustomeData>();

            foreach (var item in d.Rows)
            {
                CustomeData mydata = new CustomeData();
               // mydata.CreatedDate = item[0].ToString();
                mydata.visits = Convert.ToInt32(item[1]);
                mydata.pageviews = Convert.ToInt32(item[2]);
                mydata.users = Convert.ToInt32(item[3]);
                mydata.newUsers = Convert.ToInt32(item[4]);
                mydata.sessions = Convert.ToInt32(item[5]);


                #region Date Conversion

                DateTime Now = DateTime.Parse(date_from, CultureInfo.InvariantCulture, DateTimeStyles.None);
                DateTime TempDate = new DateTime(Now.Year, Now.Month, Convert.ToInt32(Now.ToString("dd")));

                if (GroupType == "Day")
                {    
                    TempDate = TempDate.AddDays((Convert.ToInt32(item[0])));  
                    mydata.CreatedDate = TempDate.ToLongDateString();
                }
                else if (GroupType == "Hour")
                {
                    TempDate = TempDate.AddHours((Convert.ToInt32(item[0])));
                    mydata.CreatedDate = TempDate.ToString("dddd, MMM dd, yyyy hh:mm tt"); 
                }
                else if (GroupType == "Month")
                {                        
                    TempDate = TempDate.AddMonths((Convert.ToInt32(item[0])));
                    mydata.CreatedDate = TempDate.ToString("MMMM, yyyy");
                }
                else
                {
                    //DateTime NewDate = DateTime.Parse(date_from, CultureInfo.InvariantCulture, DateTimeStyles.None);
                    //NewDate = NewDate.AddDays(((Convert.ToInt32(item[0]) + 1) - 1) * 7);
                    //string NewDate1 = NewDate.ToLongDateString();
                    mydata.CreatedDate = item[0].ToString();
                }

                #endregion

                cd.Add(mydata);
            }

            foreach (var item in d.TotalsForAllResults)
            {
                TotalsForAllResults tfa = new TotalsForAllResults();
                tfa.metrics = item.Key;
                tfa.count = Convert.ToInt32(item.Value);
                tr.Add(tfa);
            }

            // At this point, d should contain the number of visitors you got between dates
            return Json(new { TotalsForAllResults = tr, LineChartData = cd });
        }
        catch (Exception ex)
        {
            return Json(null);
        }



    }

 public AnalyticsService AuthenticateUser()
    {
        // This is the physical path to the key file you downloaded when you created your Service Account
        String key_file = @"E:\be8eab1c9893eac9f9fdac95cd64bcc58c86a158-privatekey.p12";//@"C:\Users\path\XXXXX-privatekey.p12";

        // Is the "Email Address", not the "Client ID" one!!!
        String client_id = "450122396803-jt0vt4do8ui6ah74iv1idh1pt9jsvqa6@developer.gserviceaccount.com"; //"0000000-xxxxx@developer.gserviceaccount.com";

        // Probably the password for all is "notasecret"
        String key_pass = "notasecret";

        String scope_url = "https://www.googleapis.com/auth/" + Google.Apis.Analytics.v3.AnalyticsService.Scopes.Analytics.ToString().ToLower();
        //scope_url = "https://www.googleapis.com/auth/analytics";
        //scope_url = "https://www.googleapis.com/auth/analytics.readonly";

        AuthorizationServerDescription desc = GoogleAuthenticationServer.Description;
        X509Certificate2 key = new X509Certificate2(key_file, key_pass, X509KeyStorageFlags.Exportable);

        AssertionFlowClient client = new AssertionFlowClient(desc, key) { ServiceAccountId = client_id, Scope = scope_url };
        OAuth2Authenticator<AssertionFlowClient> auth = new OAuth2Authenticator<AssertionFlowClient>(client, AssertionFlowClient.GetState);
        //AnalyticsService gas = new AnalyticsService(auth);
        AnalyticsService gas = new AnalyticsService(new BaseClientService.Initializer() { Authenticator = auth });

        return gas;
    }

 using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Web;

namespace GAExampleMVC.Models
{
public class TotalsForAllResults
{
    public string metrics { get; set; }
    public int count { get; set; }
    public double Percent { get; set; }
    public DateTime Time { get; set; }

}

public class CustomeData
{
    public string CreatedDate { get; set; }
    public int visits { get; set; }
    public int pageviews { get; set; }
    public int users { get; set; }
    public int newUsers { get; set; }
    public int sessions { get; set; }
    public string avgSessionDuration { get; set; }
    public double bounceRate { get; set; }
    public double percentNewSessions { get; set; }
    public double percentNewVisits { get; set; }
    public string Location { get; set; }
    public int uniquePageviews { get; set; }
    public string pagePath { get; set; }


}

}

Google ha lanzado una nueva raza de API que se enumeran en Google API Explorer, puedes ver la entrada para Google analitico. Y hay un Cliente .NET que proporciona .dlls para todas estas API. Este es Google, por lo que todavía está en beta, pero estoy desarrollando sin problemas.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top