根据Google官方介绍,在Google Tag Manager中变量 (Variables) 是一个值会发生变化的命名占位符,比如产品名称、价格值或日期。数据层用于暂时存放数据(如变量等),它采用了跟踪代码管理器可以理解的结构化格式,可让您轻松地将数据从网页或移动应用移至跟踪代码管理器中的代码、触发器和其他变量。
页面中的变量可通过Debug Mode(调试模式)查看。使用GTM Debug Mode,选择相关Action中Variables界面查看。
内置变量 (Built-in Variables)
GTM初始设定了一些常用的内置变量。这部分变量可以在“变量”-“内置变量”-“配置”中找到。
网页 (Pages)
- Page URL(完整网址):返回当前页面的完全网址,如:www.webanalytics.com.cn/blog/google-tag-manager-datalayer-basic/?track=test
- Page Hostname(主机名):返回当前页面的域名,如:www.webanalytics.com.cn。
- Page Path(路径):返回当前页面的路径,不包含域名和url参数,如:/blog/google-tag-manager-datalayer-basic/。
- Referrer(荐来源完整网址):返回所访问页面的来源页面url。
实用工具 (Utilities)
- Event(自定义事件):返回存储在”event” dataLayer中的值。
- Environment Name(环境名称):如果通过环境“共享预览”链接或通过环境代码段发出容器请求,则返回用户提供的当前环境名称。对于内置环境,将返回“已发布”、“最新”或“正在修改”。在其他所有情况下,会返回空字符串。
- Container ID(容器 ID):返回GTM容器的公共 ID。如:GTM-ABCDEF。
- Container Version(容器版本):以字符串的形式提供容器的版本号。
- Random Number(随机数字):返回一个随机数值,范围在0和2147483647之间。
- HTML ID:返回自定义HTML 代码,表明其已触发成功或失败;与代码触发顺序结合使用。
错误 (Errors)
- Error Message(错误消息):访问 dataLayer 中的 gtm.errorMessage 键,由“JavaScript 错误”触发器 (Trigger) 设置。这是一个包含错误消息的字符串。
- Error URL(错误网址):访问 dataLayer 中的 gtm.errorUrl 键,由“JavaScript 错误”触发器(Trigger) 设置。这是一个包含错误网址的字符串。
- Error Line(错误行):访问 dataLayer 中的 gtm.errorLine 键,由“JavaScript 错误”触发器(Trigger) 设置。这是文件中错误行的行号。
- Debug Mode(调试模式):如果容器当前处于预览模式,则返回 true。
点击 (Clicks)
- Click Element(点击元素):访问 dataLayer 中的 gtm.element 键,由“点击”触发器 (Trigger) 设置。这是对发生点击的 DOM 元素的引用。
- Click Classes(点击类):访问 dataLayer 中的 gtm.elementClasses 键,由“点击”触发器 (Trigger) 设置。这是被点击的 DOM 元素的类属性 (class) 之字符串值。
- Click ID(点击 ID):访问 dataLayer 中的 gtm.elementId 键,由“点击”触发器 (Trigger) 设置。这是被点击的 DOM 元素的 ID 属性之字符串值。
- Click Target(点击目标):访问 dataLayer 中的 gtm.elementTarget 键,由“点击”触发器 (Trigger) 设置。
- Click URL(点击网址):访问 dataLayer 中的 gtm.elementUrl 键,由“点击”触发器 (Trigger) 设置。
- Click Text(点击文字):访问 dataLayer 中的 gtm.elementText 键,由“点击”触发器 (Trigger) 设置。
表单 (Forms)
与点击变量类似,Form类型则会触发如下变量。
- Form Element(表单元素):访问 dataLayer 中的 gtm.element 键,由“表单”触发器 (Trigger) 设置。这是对表单的 DOM 元素的引用。
- Form Classes(表单类):访问 dataLayer 中的 gtm.elementClasses 键,由“表单”触发器 (Trigger) 设置。这是表单的类属性的字符串值。
- Form ID(表单 ID):访问 dataLayer 中的 gtm.elementId 键,由“表单”触发器 (Trigger) 设置。这是表单的 ID 属性的字符串值。
- Form Target(表单目标):访问 dataLayer 中的 gtm.elementTarget 键,由“表单”触发器(Trigger) 设置。
- Form URL(表单网址):访问 dataLayer 中的 gtm.elementUrl 键,由“表单”触发器 (Trigger) 设置。
- Form Text(表单文字):访问 dataLayer 中的 gtm.elementText 键,由“表单”触发器 (Trigger) 设置。
历史记录 (History)
- New History Fragment(新历史记录片段):访问 dataLayer 中的 gtm.newUrlFragment 键,由“历史记录更改”触发器 (Trigger) 设置。这是发生历史记录事件后相应网页网址的片段(即哈希)部分的字符串值。
- Old History Fragment(旧历史记录片段):访问 dataLayer 中的 gtm.oldUrlFragment 键,由“历史记录更改”触发器 (Trigger) 设置。这是发生历史记录事件前相应网页网址的片段(即哈希)部分的字符串值。
- New History State(新历史记录状态):访问 dataLayer 中的 gtm.newHistoryState 键,由“历史记录更改”触发器 (Trigger) 设置。这是网页推送到历史记录 pushState() 以触发历史记录事件的状态对象。
- Old History State(旧历史记录状态):访问 dataLayer 中的 gtm.oldHistoryState 键,由“历史记录更改”触发器 (Trigger) 设置。这是发生历史记录事件前处于活动状态的状态对象。
- History Source(历史记录来源):访问 dataLayer 中的 gtm.historyChangeSource 键,由“历史记录更改”触发器 (Trigger) 设置。
视频 (Videos)
- Video Provider(视频提供商):访问 dataLayer 中的 gtm.videoProvider 键,目前只支持YouTube。
- Video Status(视频状态):访问 dataLayer 中的 gtm.videoStatus 键,表示检测到事件时视频所处的状态,如start、pause、buffering、progress、complete。
- Video URL(视频网址):访问 dataLayer 中的 gtm.videoUrl 键,由“YouTube 视频”触发器 (Trigger) 设置。
- Video Title(视频标题):访问 dataLayer 中的 gtm.videoTitle 键,由“YouTube 视频”触发器 (Trigger) 设置。这是视频的标题。
- Video Duration(视频持续时间):访问 dataLayer 中的 gtm.videoDuration 键,是一个整数,表示视频的总时长(以秒为单位)。
- Video Current Time(视频当前时间):访问 dataLayer 中的 gtm.videoCurrentTime 键,是一个整数,表示视频中事件的发生时间(以秒为单位)。
- Video Percent(视频百分比):访问 dataLayer 中的 gtm.VideoPercent 键,是一个整数 (0-100),表示事件发生时已播放的视频所占百分比。
- Video Visible(视频可见):访问 dataLayer 中的 gtm.videoVisible 键,由“YouTube 视频”触发器 (Trigger) 设置。如果视频在浏览器界面中可见,则设置为 true,如果视频未在浏览器界面中显示(例如,不在首屏或在后台标签中播放),则为 false。
滚动 (Scrolling)
- Scroll Depth Threshold(滚动深度阈值):访问 dataLayer 中的 gtm.scrollThreshold 键,由“滚动深度”触发器 (Trigger) 设置。这是一个数值,用于表明导致触发器触发的滚动深度。对于百分比阈值,将是一个范围为 (0-100) 的数值。对于像素,此数值表示被指定为阈值的像素数。
- Scroll Depth Units(滚动深度单位):访问 dataLayer 中的 gtm.scrollUnits 键,由“滚动深度”触发器 (Trigger) 设置。其值为“像素”或“百分比”,表示为触发器触发阈值指定的单位。
- Scroll Direction(滚动方向):访问 dataLayer 中的 gtm.scrollDirection 键,由“滚动深度”触发器 (Trigger) 设置。其值为“垂直”或“水平”,表示触发器触发阈值的方向。
可见性 (Visibility)
- Percent Visible(可见百分比):访问 dataLayer 中的 gtm.visibleRatio 键,由“元素可见性”触发器设置,是一个数值 (0-100),表示当触发器触发时,有多少百分比的所选元素可见。
- On-Screen Duration(在屏显示时长):访问 dataLayer 中的 gtm.visibleTime 键,由“元素可见性”触发器设置,是一个数值,表示当触发器触发时,所选元素在多少毫秒内保持可见。
变量类型和自定义变量
如果以上内置变量不能满足需求,我们还可以选择不同类型变量进行自定义。
导航 (Navigation)
- 网址 (URL):一个非常灵活的变量可返回url中的各部分值。
- 完整网址 (Full URL):页面完整网址
- 协议 (Protocol):URL的协议名称,如http、https等
- 主机名 (Host Name):网站域名,可选择隐藏,只保留顶级域名信息。
- 端口 (Port):URL中的端口信息。如果URL不含端口信息,http将返回80,https将返回443。
- 路径 (Path):页面路径,不含域名及URL参数。可通过设置自定义页面(如html)将页面名从返回值中隐藏。
- 文件扩展名 (Filename Extension):当前页面文件后缀名,如html、php、pdf等。
- 查询 (Query):URL中”?”后面的参数。可以自定义只返回指定参数的值,即在“查询键”中填入”=”前的参数类型内容。
- 片段 (Fragment):返回URL中“#”后面的值。
- HTTP 引荐来源网址 (HTTP Referrer):该值设置为 HTTP 引荐来源网址。其各类型与“网址”一致。
网页变量 (Page Variables)
- 第一方 Cookie (First Party Cookie):该值设置为具有匹配名称的第一方 Cookie 的第一个值。也可返回第一方Cookie中的指定值。
- 数据层变量 (Data Layer Variable):数据层变量使用非常灵活,可以根据需求指定返回数据层中特定的值,push({‘var’: ‘value’})。有关数据层介绍,请参考:Google Tag Manager 数据层 (Data Layer) 简介
- 未定义的值 (Undefined Value):包含 JavaScript“undefined”值。
- 自定义 JavaScript (Custom JavaScript):此变量使用所提供的 JavaScript 函数来计算在浏览器中的值。每当用到此变量时,系统都会执行该函数并使用其返回值。自定义 JavaScript需要遵循2个原则:1、脚本必须包含在一个匿名function block (function() { … })中;2、function中必须包含一个返回状态 (return somevalue;),并返回一个值。
- JavaScript 变量 (JavaScript Variable):该值设置为您指定的全局 JavaScript 变量的值。
页面元素 (Page Elements)
- 元素可见性 (Element Visibility):该值根据指定 DOM 元素的可见状态设置。该变量可让我们知晓事件触发时某特定元素是否在浏览器可见范围内。
- 自动事件变量 (Auto-Event Variable):捕获有关触发事件(例如,点击、表单提交、元素可见性等)的项目的信息。
- Element:返回元素对象。可以将其视为自定义 JavaScript 的对象(如 {{Element}}.title),或位于 CSS 选择器中,例如与 CSS 选择器foo 匹配的 {{Element}}。
- Element Type:返回值tagName,例如“A”、“BUTTON”、“IMG”。
- Element Attribute:指定属性名称,此选项将返回该属性的值。
- Element Classes:返回元素 class 属性中的一系列类。
- Element ID:返回 id 属性的值。
- Element Target:返回 target 属性的值,例如“_blank”。
- Element Text:返回元素的文本内容的值。
- Element URL:返回从 href 或 action 属性收集的元素的网址。
- History New URL Fragment:返回浏览器历史记录中的新网址片段,例如“#summary”。
- History Old URL Fragment:返回浏览器历史记录中的旧网址片段,例如“#intro”。
- History New State:新的历史记录状态对象,由网站对 pushState 的调用控制。
- History Old State:旧的历史记录状态对象,由网站对 pushState 的调用控制。
- History Change Source:返回导致历史记录发生更改的事件,例如“pushState”、“replaceState”等。
- DOM 元素 (DOM Element):该值设置为 DOM 元素的文字或所指定 DOM 元素属性的值。
实用工具 (Utilities)
- 常量 (Constant):该值设置为您提供的字符串。可用于在不同触发器和代码中都需要的参数,插入变量后下次修改时只需要修改变量中的常量值。
- 对照表 (Lookup Table):该值根据对照表中的说明进行设置。通过对照表,您可以创建一个值随另一个变量的值而变化的变量。对照表包含两列:如果 [选定变量] 等于;将 [此变量] 设置为。
- 环境名称 (Environment Name):返回在预览模式下查看的环境的名称。
- 随机数字 (Random Number):该值设置为介于 0 到 2147483647 之间(包含边界值)的一个随机数字。
- 正则表达式表格 (RegEx Table):正则表达式表格变量类似于对照表变量,除对照表的功能外,它还可以针对匹配的项运行正则表达式模式。详细使用方法请参考:Google Tag Manager中正则表达式表格 (RegEx Table) 的用法
- 自定义事件 (Custom Event):在您网站上的以下代码执行时,该值设置为“eventNameXYZ”: push({‘event’: ‘eventNameXYZ’});。
- Google Analytics 设置 (Google Analytics Settings):通过此变量,您可以配置 Google Analytics(分析)设置,供多个 Google Analytics(分析)代码使用。
容器数据 (Container Data)
- 调试模式 (Debug Mode):如果容器处于预览和调试模式,则该值设置为 true,否则设置为 false。
- 容器 ID (Container ID):返回跟踪代码管理器容器的 ID,例如“GTM-101010”。
- 容器版本号 (Container Version Number):当容器处于预览模式时,容器版本变量会返回容器的预览版本号。在其他情况下,此变量将返回容器的实际版本号。
这篇文章有用吗?
点击星号为它评分!
平均评分 4.8 / 5. 投票数: 4
到目前为止还没有投票!成为第一位评论此文章。
很抱歉,这篇文章对您没有用!
让我们改善这篇文章!
告诉我们我们如何改善这篇文章?
请使用 Ctrl + F 方便查找