2009-04-29 1 views
9

マイアプリは自分のウェブサイトから(html)ファイルを読み込み、Googleアナリティクスを使ってそのファイルへのアクセスを追跡したいと考えています。 GA Javascriptはファイルの読み込み時に実行されないため、追跡されません。 GAから直接コードを起動する方法や、依存関係を追加せずに.NETアプリケーションからJavascriptを実行する方法はありますか?コードからGoogle Analyticsを起動するにはどうすればよいですか?

答えて

7

Googleアナリティクスは、javascriptを使用してGoogleのサーバーにWebリクエストを送信することで動作します。プログラムでこれを行うには、このWebリクエストを自分で作成する必要があります。ブラウザでページを読み込んだときに、リクエストがどのようになっているかをキャプチャするためにFiddlerまたはFireBugを使用します。その後、.NETアプリケーションで同じURLを使用することができます。

+0

おかげでデビッド:NETライブラリがhttps://developers.google.com/api-client-library/dotnet/apis/analytics/v3

はまた、心の中であなたがこれを使用する際に順守する必要が彼らのプライバシーポリシーを維持しています。 URLとUrchinのjavascriptコードを見ると、それほど単純ではありません。 URLには私が説明できない多くの「魔法の」数字があり、それはリクエスト間の変更です。それにもかかわらず、私はこれを私のアプリに追加して何が起こるかを見ようとします。 – Han

+2

GAには公開APIが用意されているため、実際にリクエストを追跡する必要はありません。 –

+1

他の誰かのウェブサイトの訪問者の統計情報(および他のもの)を変更/影響を与えることができます。 :) – IsmailS

2

Googleアナリティクスでは、カスタムアクション、イベントなどの処理方法を2つの方法で追跡できます。あなたのケースでは、自明な解は、HTMLのための仮想ページビューは、アプリケーションが読み込みファイルを生成することで呼び出して、適切なJavaScript function:。

pageTracker._trackPageview("/Foo.html"); 

この方法foo.htmlというが処理されるたびに、ページビューは次のようになりますアプリケーションに対して通常のクエリと同じように生成されます。

Foo.htmlと通常のページビューとを区別したい場合は、GAにはEvent Trackingという素晴らしい機能があります。

1

WebBrowserコンポーネントを使用して.htmlファイルを読み込み、GAトラッカーを起動しました。 WebBrowserコンポーネントは、埋め込みJavaScriptを実行します。

using (WebBrowser wb = new WebBrowser()) 
{ 
    wb.Url = new Uri(@"mytrackingpage.html"); 
    while (wb.ReadyState != WebBrowserReadyState.Complete) 
    { 
     Application.DoEvents(); 
    } 
} 

は、今私がしなければならないすべては、いくつかのerrorhandlingを追加醜いDoEvents関数を取り除くと、別のスレッドにWebBrowserコントロールを移動することです。

+0

最終的なコードがどのようなものかを知りたい場合は、今私がしなければならないのは... "ものだ。 =) –

5

私は最近、Googleアナリティクスでページビューをコードでログに記録できる.netライブラリをリリースしました。 GNUのもとではオープンソースとしてリリースされているので、必要なのは適切な属性です。

あなたはここにライブラリを取得することができます:APIのhttp://www.diaryofaninja.com/projects/details/ga-dot-net

使用例:

GooglePageView pageView = new GooglePageView("My page title", 
           "www.mydomain.com", 
           "/my-page-url.html"); 
TrackingRequest request = new RequestFactory().BuildRequest(pageView); 
GoogleTracking.FireTrackingEvent(request); 

あなたは、単にトラッキングピクセルを含むことにより、追跡イベントを発射することを可能にするというHTTPハンドラに建てもあります - B

<img src="/tracker.asmx?domain=mydomain.com&pagetitle=My%20Page%20Title&url=/my-page.aspx" /> 

また、あなたがGoogleアナリティクス(ZIP、JPG、など)を使用して、ページ内のリンクを追跡するためにjqueryのを使用することができます。ページ上のここしばらく前にそれについてログイン:

http://www.diaryofaninja.com/blog/2009/09/17/random-file-zip-and-pdf-tracking-using-jquery-amp-google-analytics

+0

Googleアナリティクスのコードを(web.configの静的ではなく)オンザフライで設定したい場合は、GoogleTracking.FireTrackingEvent(リクエスト)を呼び出す前にrequest.AnalyticsAccountCodeを動的に設定することはできますか? – Korayem

3
private void analyticsmethod4(string trackingId, string pagename) 
{ 
    Random rnd = new Random(); 

    long timestampFirstRun, timestampLastRun, timestampCurrentRun, numberOfRuns; 

    // Get the first run time 
    timestampFirstRun = DateTime.Now.Ticks; 
    timestampLastRun = DateTime.Now.Ticks-5; 
    timestampCurrentRun = 45; 
    numberOfRuns = 2; 

    // Some values we need 
    string domainHash = "123456789"; // This can be calcualted for your domain online 
    int uniqueVisitorId = rnd.Next(100000000, 999999999); // Random 
    string source = "Shop"; 
    string medium = "medium123"; 
    string sessionNumber = "1"; 
    string campaignNumber = "1"; 
    string culture = Thread.CurrentThread.CurrentCulture.Name; 
    string screenRes = Screen.PrimaryScreen.Bounds.Width + "x" + Screen.PrimaryScreen.Bounds.Height; 


    string statsRequest = "http://www.google-analytics.com/__utm.gif" + 
     "?utmwv=4.6.5" + 
     "&utmn=" + rnd.Next(100000000, 999999999) + 
    // "&utmhn=hostname.mydomain.com" + 
     "&utmcs=-" + 
     "&utmsr=" + screenRes + 
     "&utmsc=-" + 
     "&utmul=" + culture + 
     "&utmje=-" + 
     "&utmfl=-" + 
     "&utmdt=" + pagename + 
     "&utmhid=1943799692" + 
     "&utmr=0" + 
     "&utmp=" + pagename + 
     "&utmac=" +trackingId+ // Account number 
     "&utmcc=" + 
      "__utma%3D" + domainHash + "." + uniqueVisitorId + "." + timestampFirstRun + "." + timestampLastRun + "." + timestampCurrentRun + "." + numberOfRuns + 
      "%3B%2B__utmz%3D" + domainHash + "." + timestampCurrentRun + "." + sessionNumber + "." + campaignNumber + ".utmcsr%3D" + source + "%7Cutmccn%3D(" + medium + ")%7Cutmcmd%3D" + medium + "%7Cutmcct%3D%2Fd31AaOM%3B"; 


    using (var client = new WebClient()) 
    { 
     client.DownloadData(statsRequest); 
     //Stream data = client.OpenRead(statsRequest); 
     //StreamReader reader = new StreamReader(data); 
     //string s = reader.ReadToEnd(); 
    } 

} 

これを参照してください - http://tilr.blogspot.com/2012/10/google-analytics-use-google-analytics.html

関連する問題