2009-04-26 23 views
24

Googleは数日前にAnalytics Data Export APIを発表しました。これにより、サイトの分析データを簡単に取得できるようになりました。 APIはJavaとJavascriptのクライアントでデモされましたが、直接的な.Netのサポートはありません(XMLのためにまっすぐ進んでいない)。 APIは他のGoogle Data APIと似ているようですが、.Net client for thoseがあります。誰もそのライブラリのコンポーネントを使って分析データを取得しようとしましたか?Google Analytics APIと.Net

ASP.Net MVCサイトを構築しようとしていて、Googleアナリティクスを使用して「最近閲覧した」リストやそのようなものを生成すると思っていました(Googleはおそらく偽のリクエストやロボット、など)。あなたがそのアイデアを考えているなら、私もそれを聞いていただければ幸いです。

+2

私は1つを書き始めました。最終的にLinqからGoogleへのアナリティクスになる予定だったが、私はそれを収めていた。今のところ、単純なラッパーになります。もう1日か2日後に、私は初期のバージョンを投稿します。 – ChadT

答えて

12

Googleの.NETライブラリのtrunkを確認すると、アナリティクスのサポートが追加されました。

また彼らのグループを確認し、この上の投稿:GoogleはGoogle Api ExplorerにリストされるAPIの新品種をリリース持っ

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

4

は、ここで私のポストの場所をチェックアウト: http://www.akamarketing.com/blog/103-introducing-google-analytics-api-with-aspnet-c.html

をそれはあなたが言及ライブラリに内蔵されたが、それはかなりうまく働いているを使用していません。 API全体はXML/HTTPですので、使用すると便利です。基本的にはGoogleにウェブページを求めて、必要なものについてレスポンスを調べます。

2

、あなたは、エントリを見ることができますGoogle Analyticsの場合そして、これらのすべてのApisに.dllを提供する.Net clientがあります。これはGoogleなので、まだベータ版ですが、問題なく開発しています。

+0

「このメソッドを実行する権限がありません」と表示されています。要求されたパラメータでdata.ga.getメソッドを実行すると同じ問題が発生した場合は教えてください。 – mko

3
//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 = "[email protected]account.com"; //"[email protected]"; 

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


} 

}