我使用Google跟踪代码管理器实施Google Analytics(分析)。因此,在我的网站上启动的跟踪器名称并不总是相同的,例如。 gtm2,gtm3。

总体目标是能够将数据发送到我的自定义指标,如下所示:

ga( 'gtm2.set', 'metric2', 'custom metric data');

我不知道为什么此代码无法正常工作:

var yone = (ga.getAll()[1].get("name"));
var ytwo = ".set";
var ythree = yone.concat(ytwo);
ga( ythree, 'metric2', 'custom metric data');


Javascript控制台中的错误是“ VM3324:1 Uncaught TypeError:ga.getAll不是函数”。我不确定为什么会这样显示,因为当我执行console.log(ga.getAll()[1].get("name"));时,正确的跟踪器名称会显示在控制台日志中。 gtm2。

编辑
我尝试引入@balexandre提到的回调函数,所以我的代码变成了:

var yone = ga(function() {
ga.getAll()[1].get("name")});
var ytwo = ".set";
var ythree = yone.concat(ytwo);
ga( ythree, 'metric2', 'custom metric data');


在这种情况下,控制台现在显示不同的错误消息“未捕获的TypeError:无法读取未定义的属性'concat'”。

谢谢。

最佳答案

这是一个回调,所以,您不能只是调用您的代码并希望所有代码都能正常工作,而不会!

你尝试了这个

var yone = ga(function() {
  ga.getAll()[1].get("name")
});

var ytwo = ".set";
var ythree = yone.concat(ytwo);
ga( ythree, 'metric2', 'custom metric data');


但是当您在var ytwo行中时,在yone中还没有任何内容,该调用尚未触发...因此,这是一个回调(仅在加载脚本时才执行代码),您不会不知道是需要1毫秒还是10秒...

因此,您应该尝试:

ga(function() {
  // debugger;
  var yone = ga.getAll()[1].get("name");
  var ytwo = ".set";
  var ythree = yone.concat(ytwo);
  ga( ythree, 'metric2', 'custom metric data');
});


然后,如果需要,请删除注释,然后使用浏览器调试器在回调内部检查所有现有变量并执行代码...

10-06 04:40