コードからGoogleアナリティクスをトリガーする方法は?
-
03-07-2019 - |
質問
アプリがウェブサイトから(html)ファイルを読み取り、Googleアナリティクスを使用してそのファイルへのアクセスを追跡したい。 GA Javascriptはファイルの読み取り時に実行されないため、追跡されません。コードから直接GAをトリガーする方法や、依存関係を追加せずに.NETアプリからJavascriptを実行する方法はありますか?
解決
Googleアナリティクスは、JavaScriptを介してGoogleのサーバーにウェブリクエストを送信することで機能します。プログラムでこれを行いたい場合は、このWebリクエストを自分で行うだけです。 FiddlerまたはFireBugを使用して、ブラウザーにページを読み込んだときに要求がどのように見えるかをキャプチャします。その後、.Netアプリで同じURLを使用できます。
他のヒント
最近、コードを介してGoogleアナリティクスでページビューをネイティブに記録できる.netライブラリをリリースしました。 GNUの下でオープンソースとしてリリースされているので、必要なのは適切な帰属です。
ここからライブラリを入手できます: http://www.diaryofaninja.com / projects / details / ga-dot-net
APIの使用例:
GooglePageView pageView = new GooglePageView("My page title",
"www.mydomain.com",
"/my-page-url.html");
TrackingRequest request = new RequestFactory().BuildRequest(pageView);
GoogleTracking.FireTrackingEvent(request);
ページにトラッキングピクセルを含めるだけでトラッキングイベントを発生させるHTTPハンドラーも組み込まれています:
<img src="/tracker.asmx?domain=mydomain.com&pagetitle=My%20Page%20Title&url=/my-page.aspx" />
別の方法として、jqueryを使用して、Googleアナリティクス(zip、jpgなど)を使用してページ内のリンクを追跡できます。
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
Googleアナリティクスは、カスタムアクション、イベント、またはあなたが扱うものを追跡する2つの方法を提供します。あなたの場合、簡単な解決策は、アプリケーションが読み込むHTMLファイルの仮想ページビューを生成することです。適切な JavaScript関数:
pageTracker._trackPageview("/Foo.html");
この方法により、 Foo.html が処理されるたびに、アプリケーションに対する通常のクエリと同じように、ページビューが生成されます。
これらの Foo.html を通常のページビューと区別したい場合、GAにはイベントトラッキングをご覧ください。
WebBrowserコンポーネントを使用して.htmlファイルをロードし、GAトラッカーをトリガーしました。 WebBrowserコンポーネントは、埋め込みJavaScriptを実行します。
using (WebBrowser wb = new WebBrowser())
{
wb.Url = new Uri(@"mytrackingpage.html");
while (wb.ReadyState != WebBrowserReadyState.Complete)
{
Application.DoEvents();
}
}
エラー処理を追加し、見苦しいDoEventsを取り除き、WebBrowserを別のスレッドに移動するだけです。
Googleには、Analyticsを含むさまざまなgoogle APIにアクセスするためのいくつかの異なる言語用のライブラリ(アルファ版)があります。ここには、 https://developers.google.com/analytics/devguides/collection/ で、.NETライブラリは https://developers.google.com/api-client-library/dotnet/apis/analytics/v3
これを使用する際に遵守する必要があるプライバシーポリシーにも留意してください: https://developers.google.com/analytics/devguides/collection/protocol/policy