GA发送事件,不使用自定义维度

时间:2017-08-14 14:50:12

标签: javascript google-analytics

我在发送GA点击事件时尝试包含自定义维度列表。

此代码有效:

ga('send', 'event', category, action, label, {
  'hitCallback': function () {
    //some code goes here
  }
});

但是在添加自定义尺寸时:

ga('send', 'event', category, action, label, customDimensions.dimensionsToSend, {
   hitCallback': function () {
      //some code
   },
   'hitCallbackFail': function () {
      alert("Unable to send Google Analytics data");
   }
});

hitCallback和hitCallbackFail都没有被触发。 我在几个地方(like here)读到我应该可以为GA发送事件功能添加自定义维度,但也许我做错了。

1 个答案:

答案 0 :(得分:2)

第二个代码块的问题是没有正确设置自定义尺寸。您无法将自定义维度作为主要ga()函数的进一步参数传递。相反,您需要通过fieldsObject传递它们(作为您作为最后一个参数发送的对象的一部分),如下所示:

ga('send', 'event', category, action, label, {
   'dimension1': 'Some value', // Custom Dimension 1
   'dimension2': 'Some value 2', // Custom Dimension 2
   'hitCallback': function () {
      //some code
   }
});

这是:

的简写
ga('send', {
   'hitType': 'event', 
   'eventCategory': category, 
   'eventAction': action, 
   'eventLabel': label,
   'dimension1': 'Some value', // Custom Dimension 1
   'dimension2': 'Some value 2', // Custom Dimension 2
   'hitCallback': function () {
      //some code
   }
});

请参阅ga() command queue reference

另请注意hitCallbackFail不是有效字段;不会因失败而被召唤。

请参阅list of available fields

事实上,无论您发送的匹配是成功还是Google Analytics拒绝了该匹配,您提供给hitCallback的功能都会被执行。只有在未加载Google Analytics资源库或服务器连接失败的情况下,它才会被执行的唯一时间。

如果您希望执行代码,即使服务器出现故障,也可以使用超时。请参阅上面的示例:

// Use a timeout to ensure the execution of critical application code.
ga('send', 'pageview', {'hitCallback': criticalCode});
setTimeout(criticalCode, 2000);

// Only run the critical code once.
var alreadyCalled = false;
function criticalCode() {
  if (alreadyCalled) return;
  alreadyCalled = true;

  // Run critical code here...
}