如何更新dataLayer变量?

时间:2017-01-05 11:12:55

标签: javascript google-analytics google-tag-manager google-datalayer

我们最初将包含变量的对象推送到dataLayer:

dataLayer.push({
    'environment': {
        'userName': 'abc',
        'id': 123,
        'clicks': 0
    }
});

我们现在希望在用户每次点击时增加environment.clicks的值。 怎么做?当我们通过

推送它时
dataLayer.push({
    'environment': {
        'clicks': 123
    }
});

dataLayer数组可能会获得10.000秒的条目。如何正确更新变量?

3 个答案:

答案 0 :(得分:2)

更新数据层变量的方法是在发生“本机”GTM事件时或在自定义事件旁边推送变量。所以基本上你是对的。

至于您担心DL可能会涉及到许多条目 - 在任何情况下,dataLayer都会在每次点击时获得一个新条目(GTM自己添加),因此您的变量的其他条目可能无关紧要。

如果您仍想避免这种情况,可以更新全局Javascript变量并在GTM中使用它。 Google跟踪代码管理器可以访问您网页上的所有变量(您仍会获得dataLayer中的所有点击事件)。

dataLayer还有一个set方法,允许您直接写入Datalayer,这显然是您正在寻找的。您需要获取GTM实例,然后才能设置值:

 var gtm = window.google_tag_manager[{{Container ID}}];
     gtm.dataLayer.set('balloonsPopped', undefined);

详细信息例如这里是Lunametrics article。您可以在自定义HTML标记中使用此标记,以在点击事件触发标记之前更新点击次数。

此外,dataLayer会在页面加载时重置。单页应用程序需要花费很多时间才能在每次浏览时收集10 000次点击。

这是标记的Google Analytics。如果您计划跟踪GA中的点击次数,请记住GA会话在500次点击后到期,因此结果可能与您的预期不同(免费版本每月只有10M点击,点击跟踪会很快耗尽这一点)。而且,如果您想跟踪GA中的点击次数,那么您需要一个事件或其他内容来跟踪点击,因此事件的数量基本上是您要查找的指标,或者您可以创建自定义指标并将其设置为GA通话中的“1”(意味着每次通话时它会增加1)。

答案 1 :(得分:1)

引用documentation

  

请注意,将与现有变量同名的变量推送到数据层将导致现有值被新值覆盖

只需推送具有相同变量名和更新值的条目即可。

答案 2 :(得分:0)

你不能使用持有人吗?类似的东西:

var click_value_holder = dataLayer.environment.clicks;
dataLayer.push({
  'environment': {
    'clicks': (click_value_holder + 1)
  }
});