通过Google Tag Manager访问由Google Analytics设置的ClientID

5
我已经设置了一个新的“通用分析跟踪”,希望将“客户端ID”存储在其中一个自定义维度槽中。跟踪标签通过Google Tag Manager实现(使用预定义的UA标签),我很难通过基本页面视图请求传递客户端ID(通过自定义JavaScript宏)。我已经命名了我的跟踪器,以便可以访问它,这段代码在控制台中没有任何错误,但是在与GTM一起使用时会返回错误。
ga.getByName('trackerGTM').get('clientId'))

会产生错误:

Uncaught ReferenceError: ga is not defined

任何建议吗?
3个回答

9
我假设您正在触发页面视图{{url}}匹配正则表达式.*,是吗?可能是因为Universal还没有加载。您是否尝试过{{event}}等于gtm.dom?我没有测试过,但这是一个想法。
编辑:
这看起来像是一个错误。我能够运行:
function(){
  var client = ga.getAll()[0].get('clientId');
  return client;

}

并且可以轻松输出客户端ID。


Blexy,你用过自定义JS宏吗?我完全按照你的做法做了,但仍然得到未定义的结果。 - Petr Havlik
是的,自定义JS宏。但是我使用了一个未命名的跟踪器来完成它。我认为在尝试使用GTM的getByName时存在错误。是否可能有未命名的跟踪器? - Blexy
Blexy,我仍然得到未定义的结果,但我认为这可能与常规GTM实现有关(由于CMS限制而不是直接在源代码中)。我将与我们的开发团队尝试修复它。 - Petr Havlik
1
所以Blexy,我终于回来了,发现问题与跟踪器对象准备就绪有关。我设置了一个事件,一旦“事件”等于“gtm.load”,值就会正确传递。再次感谢您的输入 :) - Petr Havlik
啊,听起来像是竞态条件 - 宏在 ga 加载之前运行了。很有道理。感谢您的跟进 - 这很有用! - Blexy
此外,我结合了Simo的建议,如何每个会话仅触发一次标签(http://www.simoahava.com/analytic/universal-analytics-fire-script-just-per-session/),现在它运行得非常好 :) - Petr Havlik

1
实际问题在于GTM(Google Tag Manager)创建了一个名为ga的对象(它创建了一个名为ga后跟随一个随机数的对象),因此'ga'未定义。您可以尝试使用标签管理器将客户端ID放入JavaScript变量中,以便从页面访问它。

请提供更多细节。 - adao7000
我没有做过那个,但曾经遇到过类似的问题,不得不采用混合解决方案(使用GTM和UA代码进行跨域跟踪)。我知道完全(或大部分)可以使用GTM完成,但时间是一个问题。问候 - Carlos Mauricio López

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接