如何从代码中触发Google Analytics?

9
我的应用程序从我的网站读取一个(html)文件,我想使用Google Analytics跟踪对该文件的访问。由于GA JavaScript在读取文件时不会被执行,因此无法进行跟踪。是否有一种方法可以直接从代码触发GA或者通过.NET应用程序执行JavaScript而不添加大量依赖项?
6个回答

7
谷歌分析通过JavaScript向谷歌服务器发出Web请求来实现。如果您想以编程方式执行此操作,只需自己进行此Web请求即可。我建议使用Fiddler或FireBug捕获在浏览器中加载页面时请求的样子。然后,您可以在.Net应用程序中使用相同的URL。

谢谢David。看着URL和Urchin JavaScript代码,似乎并不那么简单。URL中有很多我无法解释的“神奇”数字,并且在请求之间会发生变化。尽管如此,我会尝试将其添加到我的应用程序中,看看会发生什么。 - Han
2
GA提供了公共API,您真的不必追踪请求。 - viam0Zah
1
必须有这些神奇数字,否则任何人都可以更改/影响其他网站的访客统计数据(以及其他内容)。 :) - IsmailS
1
你可能会发现修改这个http://code.google.com/mobile/analytics/docs/web/很有用。它是服务器端跟踪实例(在本例中是移动设备),这些实例可能不支持JavaScript。你可以为服务HTML文件的应用程序创建一个HTTP处理程序,并将链接中的建议转换为服务调用。如果您这样做,您可能会发现更容易为这些请求创建另一个帐户,因为您所有的流量可能会从您的托管服务器报告。实际上,在应用程序中的浏览器中托管HTML可能更容易实现标准化。 - Jonathan Bates
这是跟踪代码参数列表 http://code.google.com/apis/analytics/docs/tracking/gaTrackingTroubleshooting.html#gifParameters - Brian Boatright

5
我最近发布了一个.NET库,可以通过代码本地记录Google Analytics页面浏览量。它以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 Analytics(zip、jpg等)- 我之前在这里写过相关博客:

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


如果我想动态设置Google Analytics代码(而不是在web.config中静态设置),我是否可以在调用GoogleTracking.FireTrackingEvent(request)之前动态地设置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

2
谷歌分析提供了两种跟踪自定义操作、事件或者任何你所处理的内容的方法。在你的情况下,简单的解决方案是为你的应用程序读取的HTML文件生成一个虚拟页面视图。调用适当的JavaScript函数: JavaScript function
pageTracker._trackPageview("/Foo.html");

这样,每次处理Foo.html时,都会生成一个页面视图,就像对您的应用程序进行正常查询一样。
如果您想区分这些Foo.html和普通页面视图,则可以使用GA的一个很好的功能,称为事件跟踪。建议您了解一下。

1

我最终使用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移动到单独的线程中。

好奇看看你最后的代码长什么样子,做完了所有的“现在我只需要做…”这些步骤后。 =) - J. Scott Elblein

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接