如何在没有两个发送调用的情况下将事件发送到谷歌分析中的多个跟踪器(analytics.js)

时间:2013-10-09 19:39:44

标签: google-analytics google-analytics-api tracker analytics.js

根据google的新analytics.js文档 - 您可以设置多个跟踪器,并通过在单独的发送呼叫中按名称明确提及跟踪器来向他们发送事件:

https://developers.google.com/analytics/devguides/collection/analyticsjs/advanced#multipletrackers

ga('create', 'UA-XXXX-Y');
ga('create', 'UA-12345-6', {'name': 'newTracker'});  // New tracker.
ga('send', 'pageview');
ga('newTracker.send', 'pageview'); // Send page view for new tracker.'

我想知道是否有办法向两个跟踪器发送一个事件而不必为每个事件写两个单独的发送调用,或者即使有一种方法使用一个发送调用和一个逗号描述的跟踪器列表发送或者其他的东西。有人知道吗?

3 个答案:

答案 0 :(得分:2)

基于Asynchronous Synchronization文档&示例代码,您可以执行以下操作:

function multiSend() {
  var trackers = ga.getAll();
  for (var i = 0; i < trackers.length; i++) {
     tracker=trackers[i].get('name')+'.send';
     argum = Array.prototype.slice.call(arguments);
     argum = argum.toString();
     ga(tracker,argum);
  }
}

ga(multiSend('pageview')); // send a pageview to all defined trackers...

答案 1 :(得分:0)

使用三个参数创建一个函数(您可以为事件添加另外两个可选参数,但对于此示例,我只使用了类别,操作和标签。)

在您的链接,按钮等上,使用onclick调用该函数并传递该事件的参数。

<head>
    <script>
        function evtTrack(evtCat,evtAction,evtLabel) {

            ga('send', 'event', evtCat, evtAction, evtLabel);
            ga('newTracker.send', 'event', evtCat, evtAction, evtLabel);
}
    </script>
</head>

//Example
<body>
    <a href="blah.com" onclick="evtTrack('Product Category','Image Click', 'Shoes');">Example</a>
</body>

答案 2 :(得分:0)

根据Mike的回答,它适用于GA Universal。

function multiSend() {
  var trackers = ga.getAll();
  for (var i = 0; i < trackers.length; i++) {
    tracker=trackers[i].get('name')+'.send';
    argum = Array.prototype.slice.call(arguments); 
    argum.unshift(tracker);
    ga.apply(window, argum);
  }
}