首页 > 解决方案 > 您可以在没有设置名称的谷歌标签管理器中读取 Cookie 吗?

问题描述

我可以在 Google 跟踪代码管理器中读取已设置名称的第一方 cookie。但是,我遇到了一些 cookie 名称是基于会话的实例,并且没有一致的名称设置供我检查。我想知道是否设置了 cookie 并理想地读取数据。

例如 cookie_name_123456 cookie_name_234567 cookie_name_345678

名称字段看起来不像使用正则表达式。任何人都知道设置 GTM 以读取这样的 cookie 的方法吗?

标签: cookiesgoogle-analyticsgoogle-tag-manager

解决方案


您可以使用读取 document.cookie 属性的 Javascript 创建自定义 HTML 标记,并通过分隔符拆分以获取包含单个 cookie ( document.cookie.split(";")) 的数组。

这为您提供了一个包含所有第一方 cookie 的数组,这些 cookie 未标记为“仅限 http”(JS 无法访问这些 cookie)。每个数组条目都将具有“cookiename 等于值”的格式(例如,“ _ga=GA1.2.1545993750.1587886865”将是 Universal Analytics cookie“ _ga”,其中客户端 ID 作为值)。然后,您可以遍历数组。

在循环内部,您可以用“=”符号拆分每个数组条目,以获得具有两个元素的数组,[0] 表示名称,1表示值。然后,您将您的正则表达式应用于该名称。如果 reexeg 匹配您正在寻找的内容,您可以将值推送到 dataLayer。

为了确保这在将使用 cookie 值的标签之前运行,您可以使用标签排序。如果您通过 onHtmlSuccess() 和 onHtmlFailure() 函数管理您的序列,如 Simo 博客中所述,您可以设置序列,以便仅在 cookie 值实际存在时触发标签。

唉,在自定义模板中无法做到这一点,这会更加优雅,但是自定义模板中的沙盒 JS 无法访问全局文档属性。


推荐阅读