Google分析 - 事件点击在sendHitTask

时间:2017-09-19 14:28:37

标签: google-analytics

刚开始将Salesforce社区与Universal Google Analytics(两者中的初学者)集成。 在标记中添加GA集成代码。 已下载适用于Chrome的GA调试程序。 浏览器:Chrome。 以下是代码中的代码:

<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','https://www.google-
  analytics.com/analytics_debug.js','ga');

  window.ga_debug = {trace: true};
  ga('create', 'UA-xxxxxxxxx-x', 'auto');            

  ga('send', 'pageview');    

  ga(function(tracker) { 

      tracker.set('sendHitTask', function(model) {  

          var hitPayload = model.get ( 'hitPayload' ); 

          console.log ( 'models payload: ' + hitPayload );

          // need this section to get user id value to send to dimension
          //ga('set', 'dimension3', tracker.get('userId'));                         
     });
   });     

</script>

稍后在代码中我们调用跟踪事件。 我添加之后 “ga(功能(跟踪器){”代码部分 那些跟踪事件的调用不再起作用(用于工作)。

上面的代码有什么问题? 非常感谢

2 个答案:

答案 0 :(得分:1)

为跟踪器设置sendHitTask时,您将覆盖它;也就是说,您正在删除将数据发送到Google Analytics并将其替换为您自己的常规任务。因此,执行此操作后,您跟踪的所有匹配都不会被发送到GA。

相反,在设置sendHitTask之前,您需要获取现有的并在新的sendHitTask函数中首先执行该函数。

documentation for adding to a task开始,有些代码可以执行此操作。在tracker.set来电之前,您需要添加:

// Grab a reference to the default sendHitTask function.
var originalSendHitTask = tracker.get('sendHitTask');

然后,在您分配给sendHitTask的功能中,您需要调用该功能:

// Send the normal request to Google Analytics
originalSendHitTask(model);

答案 1 :(得分:1)

你已经削弱了你的sendHitTask,因为你提供的覆盖它的方法没有做任何发送 - 你已经用一个将某些东西记录到控制台的函数替换它而没有别的。

如果查看example in the documentation,您会看到它们将原始的sendHitTask存储在变量中,并在自定义函数中调用。

此外,您无法在任务中使用ga对象,您可以通过传递给任务的模型访问跟踪器的属性。

所以你需要像

这样的东西
ga(function(tracker) {
  // Grab a reference to the default sendHitTask function.
  var originalSendHitTask = tracker.get('sendHitTask');

  tracker.set('sendHitTask', function(model) {
     model.set('dimension3',model.get('userId'));
     originalSendHitTask(model);  
  });
});

未经测试,因此可能需要调整,但基本上应该是它。

您也可以考虑使用customTask添加自定义行为,但它会产生相同的结果。