使用 Javascript 检索 Google Analytics 跟踪器名称时出现问题
我使用 Google Tag Manager 来实现 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 is not a function”。我不确定为什么会显示此信息,因为当我执行
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');
});
如果您愿意,请删除注释并使用浏览器调试器检查所有现有变量并在回调内执行代码...
您是否尝试过将索引 0 改为 1?像这样:
ga.getAll()[0].get("name");
如果您不使用 GTM,结果可能是 t0 ,而使用 GTM,结果可能是 gtm xx 。