问题标签 [google-datalayer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
3868 浏览

javascript - 我可以在 Google 跟踪代码管理器中观察数据层变量的变化吗?

我正在编写一个 Javascript 函数,它将成为谷歌标签管理器中的一个标签。

它被加载到我几乎无法控制的 SPA 上。

每当用户点击时,我都会使用 GTM 功能将一些数据推送到数据层,例如:

每次触发时,它都会向数据层推送一个新事件,并更新 gtm.customWatchedVariable 的值。我现在要检查的是 currentgtm.customWatchedVariable是否与 last 不同gtm.customWatchedVariable,然后在 GTM 更改时触发 Trigger。

我怎样才能做到这一点?

0 投票
1 回答
3629 浏览

google-chrome-extension - GTM - 将事件/数据推送到 gtm dataLayer 而不向 https://www.google-analytics.com/r/collect?v 发送任何内容

我在我的 chrome 扩展页面中添加了这个 gtm 代码(由内容脚本和 iframe 注入)

我确认成功加载了 gtm.js 文件。

我有一个按钮,下面的代码已附加到按钮的单击事件

当我单击按钮 dataLayer.push 成功但没有发送到https://www.google-analytics.com/r/collect? 开发人员工具栏窗口的“网络”选项卡中的任何活动时。

有人可以帮我解决这个问题吗?提前致谢!

编辑: 添加标签设置的屏幕截图。 在此处输入图像描述

0 投票
2 回答
3089 浏览

javascript - 基于电子商务数据层对象的谷歌标签管理器自定义 javascript 变量

我正在尝试根据 GTM 数据层电子商务对象中包含的数据来计算购物车的价值。我将整个电子商务对象放入一个数据层变量中,以便我可以在自定义 js 变量中使用它,但我无法使递归计算工作。

这是来自数据层的代码示例:

我的目标是确定产品数组中的产品数量,然后执行产品价格 * 产品数量的计算,以通过整个产品数组所需的次数。在这种情况下,它会是这样的:

(1*100) + (3*50) = 250。

我尝试修改Simo Ahava 相关博文中的代码,但没有成功。他的博文和我的意图之间的区别是:

  1. 我不需要将购物车值设置为电子商务自定义指标。我只想在自定义 js 中返回购物车的值。
  2. 我不希望这涉及在购物车中添加或删除商品。相反,我只想在触发 GTM 事件“结帐”时计算价值并计算所包含产品的价值。

提前致谢。

0 投票
5 回答
1707 浏览

javascript - Google 跟踪代码管理器虚拟页面视图

我在设置 virtualPageView 时遇到了一点问题,它应该覆盖在没有结果时发送给 google 的 URL。

下面是我的 JavaScript 代码:

如您所见,我想使用事件触发器(empty_result)。

在谷歌中,我使用触发器来确定页面是否为无结果页面。首先,我使用自定义 JS 创建了一个自定义变量

如果 SearchEngine 找不到结果,则设置类。到目前为止,一切都很好。我还创建了一个 dataLayer 变量来保存 virtualPageURL

数据层

现在我需要一个在变量为真时触发的事件。

事件搜索EmptyResult

最后,我创建了一个 PageView 类型的标签,在事件发生时触发:

谷歌标签

到目前为止,它似乎还可以,标签已正确配置(我猜)但如果我进行没有结果的搜索,则页面 URL不会被覆盖

在此处输入图像描述

标签被正确触发并填充变量。dataLayer 的概览显示了正确的 dataLayer 事件。但是 PageURL 没有被覆盖......即使我等了一整天,该类别也不会发送给谷歌。

我究竟做错了什么?如果有人有想法甚至解决方案,我将非常感激:)

提前致谢

艾字节

更新:

嘿,我忘了提,我想使用新的页面变量作为谷歌应该用来确定搜索词和搜索类别的字符串在谷歌分析中,我将搜索配置为“q”参数,将“no_result”配置为类别。甚至可以更改谷歌最终解析的字符串吗?

0 投票
2 回答
350 浏览

javascript - 如何修改 javascript 数组的内容 - 可能使用 forEach 函数

我有一个将信息从我的站点的 dataLayer 推送到数组中的函数。我希望能够更改该数组中的信息,但我不知道如何实现这一点。

以下是我网站 HTML 中数据层的示例:

我创建了以下 javascript 函数来循环遍历transactionProducts数组并将所有url值推送到一个名为的数组中productUrls

现在,当我调用该getProductUrls()函数时,它按预期工作并将值推送到productUrls数组中,如下所示:

['url1-p2180','url2-p2180','url3-p1448', 'url4-p1448']

我想要实现的是这个数组(最好) - 或一个新数组(如果更容易的话) - 只包含紧跟“-p”的数字,如下所示。

['2180','2180','1448','1448']

我所有的产品网址都以“-p”结尾,然后是任意位数。

我曾考虑使用正则表达式来替换 values productUrls.replace(/.+\-p/g, ''),但它不起作用,我怀疑replace它只适用于字符串而不适用于数组。

我怀疑使用forEach正则表达式替换数组中的每个项目的函数会起作用,但我在所有尝试使用它时都失败了。

任何帮助将不胜感激,因为我有点 javascript 新手。

0 投票
0 回答
306 浏览

javascript - 触发 GTM 事件并同时使用 replaceState 更新历史 API

当像这样触发 GTM 标签时:

同时还使用历史 API 更新 URL 栏,如下所示:

URL 栏的行为异常。会发生什么:

  1. URL 栏从当前状态开始(例如 /path?office=current-param
  2. URL 栏被 History API 替换(例如 /path?office=1234AB)
  3. URL 栏被页面视图的第一个状态(例如 /path?param=first-state

第三部分不发生的唯一方法是当我禁用/评论 GTM 标签时。因此,我假设 GTM 不能很好地处理带有 History API 的状态。

我想知道是否有可能禁用 GTM 中的 History API 发生的任何事情。

更新 使用该eventCallback属性,我可以确保无论何时触发事件,之后总是会调用历史记录 replaceState,这会导致正确的结束状态 (/path?office=1234AB)。我现在拥有的代码是:

我仍然看到从原始状态跳转到新状态:(第 2 点和第 3 点切换)

  1. URL 栏从当前状态开始(例如 /path?office=current-param
  2. URL 栏被页面视图的第一个状态(例如 /path?param=first-state
  3. URL 栏被 History API 替换(例如 /path?office=1234AB)
0 投票
4 回答
27763 浏览

javascript - 如何从 dataLayer 对象中获取值

我想从谷歌标签管理器的 dataLayer 对象中获取一些值。在 chrome 标签帮助中,我得到了这样的值

我需要获取“链接器”值。我试过dataLayer[3].Linker但它给了我“未定义”或空白也相同dataLayer[1].event(它是空白不是返回值=“gtm.dom”)当我尝试dataLayer[0].event它返回正确'gtm.js'

请帮助我如何获得“链接器”值

0 投票
2 回答
1199 浏览

google-tag-manager - Google 跟踪代码管理器:自定义 Html 标记中的数据层

我需要将相同的 dataLayer 应用于使用相同电子商务系统的多个站点。我没有将完全相同的 DL 复制/粘贴到多个站点上,而是考虑在 GTM 控制台中使用自定义 HTML 标记推送到 dataLayer。

这是您建议做或不做的具体事情吗?

作为参考,这是我的 DL:

谢谢

0 投票
1 回答
626 浏览

javascript - Google dataLayer 实现 - dataLayer.push - 如何将其添加到页面?

我有 2 个与 GTM 实施相关的问题

  1. 在体内添加 GTM 的最佳方法是什么。我正在使用紧跟在标签之后的 SSI 文件添加它。

    /li>

可以这样包含它还是有更好的方法在标签之后添加它?

  1. 其次,我正在使用 Javascript onclick event实现dataLayer.push代码。这是在页面上硬编码 dataLayer.push 的好习惯,如下例所示?

    /li>

我必须在至少 50 个页面上添加 onclick dataLayer.push 事件,并且都是静态 html 页面,每个页面都有唯一的 dataLayer 变量。

任何关于最佳实践以及如何最好地实施它的建议将不胜感激!

0 投票
2 回答
8439 浏览

google-analytics - Google Tag Manager dataLayer 变量未定义

当我的页面显示时,我将一些数据推送到 Google Tag Manager (GTM) dataLayer:

提交表单后,我推送了一些新数据:

我在 GTM 中创建了 dataLayer 变量,并将这些变量插入到 GTM 中我的标签的类别/操作/标签字段中。其中一个变量是这样设置的:

该标签由 URL 路径触发,在预览模式下有效。

但是,当我在 Google Analytics 的实时仪表板中查找事件时,类别/标签/事件列中仅显示“未定义”。在我看来,变量设置不正确,但我已经查看了所有内容,看起来还不错。

我究竟做错了什么?