سؤال

أعلنت جوجل بيانات تصدير البيانات التحليلات منذ بعض الأيام، مما يجعل من الأسهل الحصول على بيانات التحليلات لموقع. تمت عرض برامج API مع عملاء Java و JavaScript، ولكن لا يوجد دعم مباشر .NET (بخلاف الذهاب مباشرة إلى XML). يبدو أن API مشابه ل APIs بيانات Google الأخرى، وهناك عميل .NET لأولئك. وبعد هل حاول أي شخص استخدام المكونات في تلك المكتبة للحصول على بيانات التحليلات؟

أنا بصدد بناء موقع ASP.NET MVC وأعتقد أنني أستخدم قوائم Google Analytics لتوليد قوائم "الأكثر مشاهدة" وأشياء من هذا القبيل (نظرا لأن Google ربما تكون أفضل في تقييم الطلبات الزائفة والروبوتات، إلخ) وبعد إذا كان لديك أي أفكار حول هذه الفكرة، فستكون نقدر الكثير من الاستماع إليها أيضا.

هل كانت مفيدة؟

المحلول

افحص ال جذع لمكتبة Google .NET، فقد أضافوا دعم التحليلات.

تحقق أيضا من مجموعات المجموعات الخاصة بهم على هذا:

http://groups.google.com/group/gdata-dotnet-Client-library/browse_thread/thread/2D2EEC9103B731C6.

و

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

نصائح أخرى

تحقق من موقع مشارك الخاص بي هنا:http://www.akamarketing.com/blog/103-interroducing-google-analytics-api-with-aspnet-c.html.

لا يستخدم المكتبة المدمجة التي ذكرتها لكنها تعمل بشكل جيد للغاية. API بأكمله هو XML / HTTP بحيث يكون مفيدا جدا للاستخدام. تسأل أساسا Google للحصول على صفحة ويب وفحص الاستجابة لما تحتاجه.

 //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 بإصدار سلالة جديدة من واجهات برمجة التطبيقات التي يتم سردها جوجل api explorer., ، يمكنك أن ترى الدخول ل تحليلات كوكل. وبعد وهناك .NET Client. التي توفر .dlls لجميع هذه apis. هذه هي Google، لذلك لا تزال في بيتا ولكني أطباقها دون أي مشاكل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top