如何更新数据层变量?

Sim*_*mon 4 javascript google-analytics google-tag-manager google-datalayer

我们最初将一个包含变量的对象推送到数据层:

dataLayer.push({
    'environment': {
        'userName': 'abc',
        'id': 123,
        'clicks': 0
    }
});
Run Code Online (Sandbox Code Playgroud)

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

dataLayer.push({
    'environment': {
        'clicks': 123
    }
});
Run Code Online (Sandbox Code Playgroud)

dataLayer Array 可能会获得 10.000 个条目。如何正确更新变量?

Eik*_*rff 7

更新数据层变量的方法是推送一个变量,无论是在“原生”GTM 事件发生时还是在自定义事件旁边。所以基本上你是对的。

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

如果您仍然想避免这种情况,您可以更新全局 Javascript 变量并在 GTM 中使用它。Google Tag Manager 可以访问您页面上的所有变量(您仍将获得 dataLayer 中的所有点击事件)。

dataLayer 也有一个set方法可以让你直接写入 Datalayer,这显然是你要找的。您需要获取您的 GTM 实例,然后您可以设置值:

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

详细信息例如在Bounteous 文章中。您可以在自定义 HTML 标记中使用它来在点击事件触发您的标记之前更新点击计数。

此外,数据层会在页面加载时重置。单页应用程序要在每次网页浏览中收集 10 000 次点击,这将是一个巨大的挑战。

这被标记为谷歌分析。如果您计划在 GA 中跟踪点击次数,请记住 GA 会话会在 500 次点击后过期,因此结果可能与您预期的不同(而且免费版本每月只有 1000 万次点击,点击跟踪会很快耗尽)。如果您想跟踪 GA 中的点击次数,那么您需要一个事件或其他东西来跟踪点击次数,因此事件数量基本上就是您要查找的指标,或者您可以创建一个自定义指标并将其设置为GA 调用中的“1”(意味着每次调用都会增加 1)。


Anu*_*mar 6

引用文档

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

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