如何使用新版analytics.js跟踪多个帐户?

20

我需要在同一个页面上使用Google的新analytics.js跟踪两个帐户的页面浏览量。有许多教程和示例可以用旧版ga.js完成此操作。但我找到的只有这个分析文档页面。我已经编写了符合给定示例的代码,但它只能跟踪第一个(默认)跟踪器的视图,而不能跟踪第二个。

<script>
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
  ga('create', 'UA-XXXXXXXX-3', 'domain.com');
  ga('create', 'UA-ZZZZZZZZ-1', {'name':'b'});
  ga('send', 'pageview');
  ga('b.send', 'pageview');
</script>

有人知道我的代码哪里出了问题吗?在我看来,它符合Google的示例。

5个回答

27

使用多个追踪对象

为了解决这个问题,你需要为每个想要发送数据的网站属性创建一个追踪对象:

ga('create', 'UA-12345-1', 'auto');
ga('create', 'UA-12345-6', 'auto', {'name': 'newTracker'});  // New tracker.

运行后,将创建两个跟踪器对象。第一个跟踪器将是默认跟踪器,没有名称。第二个跟踪器将以newTracker命名。

要使用这两个跟踪器发送页面浏览信息,需要在命令前加上跟踪器的名称,然后加上一个点。例如:

ga('send', 'pageview');
ga('newTracker.send', 'pageview'); // Send page view for new tracker

20
您针对使用analytics.js进行多个帐户跟踪的代码是正确的,我已经在我的网站上成功测试了类似的代码。因此,您需要检查以下可能的错误:
1、确认是否发送了两个跟踪数据。例如,在 Chrome 中,请使用 GA 调试器插件,并在 JavaScript 控制台中查看是否获取了以下两个跟踪 ID 的详细信息
adSenseId        (&a)   425734287 
apiVersion       (&v)   1 
clientId         (&cid) xx.xx
encoding         (&de)  UTF-8 
flashVersion     (&fl)  11.8
hitType          (&t)   pageview
javaEnabled      (&je)  1 
language         (&ul)  en-us 
location         (&dl)  domain.com 
referrer         (&dr)
screenColors     (&sd)  24-bit
screenResolution (&sr)  1366x768
title            (&dt)  yourdomaintitle 
trackingId       (&tid) UA-XXXXXXXX-3 
viewportSize     (&vp)  1364x361 

理想情况下,您应该看到这个消息,表示您的代码是正确的,这意味着您的网站正在正确地发送两个跟踪信号。
第二个跟踪 ID,请确保跟踪 ID与 GA Web 属性中的跟踪 ID 完全相同。
请确保在您的 Web 属性中对应的视图未应用任何过滤器,这些过滤器可能会过滤掉流量。如果使用了一些过滤器,请使用未经过滤的视图,并查看实时概览中是否有访问量。

很奇怪,因为一切看起来都没问题。我已经成功安装了GA调试器插件,第一个和第二个跟踪ID返回的日志完全相同。我还检查了跟踪ID是否正确,并且没有使用任何过滤器。这真的让我感到困惑 :-( - Frodik
当您访问您的网站时,您的第二个属性的实时视图中是否有任何点击量? - tony m
你能否通过创建一个新属性并使用新的跟踪ID替换第二个跟踪ID来进行测试,然后检查实时视图中是否获取到了新的点击量? - tony m
好的,创建新属性解决了问题,现在按预期工作。感谢您的努力。 - Frodik

9

1
我知道这是一个老的答案,但是因为我没有看到有人提到可以同时推送到两个帐户的解决方案,所以我想分享一下...

使用多个跟踪器是一个好方法,但如果您想要始终在两个帐户中推送,请像这样覆盖ga函数:

ga('create', 'UA-XXXXXXXX-1', {
    'name': 'myCustomTracker',
    'cookieDomain': 'auto'
});
ga('create', 'UA-XXXXXXXX-2', 'auto');

ga(function () { //Wait for Analytics to be fully loaded
    var oldGa = ga;
    ga = function () { //Override ga function to call both trackers
        if (arguments && arguments.length > 0) {
            oldGa.apply(null, arguments);
            arguments[0] = "myCustomTracker." + arguments[0]; //Edit first argument to call second tracker.
            oldGa.apply(null, arguments);
        }
    };

    ga('send', 'pageview'); //Perform page view on both trackers at once.
});

这样,您就能像以前一样调用ga函数,将数据同时推送到两个跟踪器中!


1
根据分析文档页面中的示例,你应该这样做:
ga('create', 'UA-XXXXXXXX-3', 'auto');
ga('create', 'UA-ZZZZZZZZ-1', 'auto', {'name':'b'});
// note this last argument            ^^^^^^^^^^^^

第四个参数确定了吗? - Jake N

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