GA 发送事​​件,不适用于自定义维度

Fil*_*ski 1 javascript google-analytics

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

此代码有效:

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

但是在添加自定义维度时:

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

hitCallback 和 hitCallbackFail 都不会被触发。我在几个地方(比如这里)读到我应该能够向 GA 发送事​​件函数添加自定义维度,但也许我做错了什么。

col*_*ple 5

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

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

这是以下的简写:

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
   }
});
Run Code Online (Sandbox Code Playgroud)

请参阅ga()命令队列参考

另请注意,这hitCallbackFail不是有效字段;不会因为失败而被调用。

请参阅可用字段列表

事实上,hitCallback无论您发送的匹配成功还是 Google Analytics 拒绝匹配,您提供的函数都会执行。唯一不会执行的情况是 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...
}
Run Code Online (Sandbox Code Playgroud)