使用Javascript设置Google Analytics自定义维度,缺少数据

使用Javascript设置Google Analytics自定义维度,缺少数据,javascript,google-analytics,google-tag-manager,Javascript,Google Analytics,Google Tag Manager,我有一个javascript程序,它作为一个定制的HTML GTM标记部署,用于加载javascript。Javascript动态获取自定义维度索引和值对。以下Javascript将数据推送到Google Analytics: ga(function (tracker) { // ... code to figure out the dimension index & value ... // // Assuming Index & Value for custom di

我有一个javascript程序,它作为一个定制的HTML GTM标记部署,用于加载javascript。Javascript动态获取自定义维度索引和值对。以下Javascript将数据推送到Google Analytics:

ga(function (tracker) {
  // ... code to figure out the dimension index & value ... //
  // Assuming Index & Value for custom dimension are now known 
  var dimData = {};
  dimData["dimension" + index] = value;
  dimData["nonInteraction"] = true;
  var action = "Set " + index + " to " + value;
  var trackerName = ga.getAll()[0].get('name');
  ga(trackerName + '.send', 'event', 'Dimension', action, dimData);
}
我可以看到带有维度数据的事件,但没有看到自定义维度数据。这可能是什么原因造成的


更新:GTM标签之前设置了Universal Analytics,HTML包含一个外部库,用于加载配置维度,使用配置维度查找数据,解析输出,然后尝试将数据发送到Google Analytics。我不认为这是一个竞争条件,它被包装在gafunction tracker回调中。我们无法提前知道尺寸

您可能有一个竞赛条件,Ga对象并不总是准备就绪。 根据您正在做的事情-看起来您可能会更幸运地使用GtM实现您的解决方案,将数据推送到您的帐户中,并让它处理复杂性

将上述代码更改为:

    var dataLayer = dataLayer || []; // Put this in before your GTM Snippet and After the opening Body tag
// Now you are ready to work. 
// 3. Create a datalayer push for the dimensions you want to capture: 
dataLayer.push({
    'event':'addinginCustomDimData', 
    'dimension1name':'dimension1Value', 
    'dimension2name':'dimension2Value'
});
现在记录事件-

使用名为addinginCustomDimData的自定义事件添加触发器 为dimension1name和dimension2name添加变量数据层类型 使用您选择的类别操作和变量创建一个通用分析事件标记。 选择custom dimension并按顺序输入上述变量。 完成了!
享受

您的标签何时点火?你能包括你的标签和触发器的屏幕截图吗?问题可能是因为你在ga对象实际定义之前调用它,这是由于加载分析库的异步性质,所以你可能会得到类似“ga.getAll不是函数”的东西。您需要一个回调,或者您可以将标记设置为稍后在gtm.dom上启动。感谢您提供了使用数据层的指针。我可以使用变量dimension1或dimension2发送到Analytics吗?我在一些地方读到dimensionN或metricN用于分析。你建议的问题是,我在运行时之前不知道哪个维度、索引或值,因为它的可重用代码适用于许多网站。要使用事件和变量,在GTM中的设计时,我不知道如何使用其各自的值来更改索引。只要它们在站点中保持一致,就可以在帐户级别配置标签。Gtm只需要尺寸的数字,所以索引1和索引2将是关于标签的尺寸Sok的归档标签。也许我误解了你的意思,但索引可能是维度5、维度6和/或维度12。另一个场地的尺寸为7和8。使用索引1或索引2将转到错误的维度。我不想为每个可能的索引或值创建一个变量。对不起,如果我没抓住要点。我想我知道你的意思-这应该行得通。无论您选择哪种方式映射维度,都可以使用您喜欢的字段,因为这是在帐户属性级别上设置的。。甚至对于匹配多个维度的多个视景