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

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

问题描述:

根据新的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.' 

我不知道是否有一种方法,以一个事件发送到两个跟踪器,而无需编写两个独立的送话费为每一个事件,或者即使有是一种使用一个发送电话和一个逗号描述的追踪器列表或其他东西发送的方式。有人知道吗?

创建三个参数(可以包括事件,太多额外的两个可选参数,但在这个例子中我只用了类别,动作和标签。)

在你的链接,按钮等功能。,使用onclick调用该函数并传递参数给事件。基于该Asynchronous Synchronization文档

<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> 
+0

这会向Google Analytics发送两个请求。我的理解是,OP正在寻求一种方法,只向两个不同的跟踪器发送一个请求给GA。 –

+0

目前,这确实有效。每个属性只收到1个事件。 – frodo2975

&示例代码,您可能能够这样做:根据小李的回答

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... 

,并与GA通用的作品。

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); 
    } 
}