GA4 第三方轻量最小化页面脚本 Quick GA4 使用说明
关注 1421
前提
阅读本节的前提是对 Google Analytics 的主要事件有所掌握,你可以查看GA4 页面脚本事件的具体含义和触发条件一节来了解他们。
页面脚本 Quick GA4
Quick GA4(quick-ga4.js
)是一个免费的 Google Analytics(GA4)第三方轻量最小化页面脚本(JavaScript),他实现了官方 GA4 脚本所具备的主要实用功能,包括增强型衡量功能中的网页浏览量,滚动次数,出站点击次数,网站搜索,文件下载次数。
除了能够对以上功能进行常规配置,Quick GA4 还提供了额外的设置选项, 使得某些功能更具灵活性。比如,设置用于触发滚动事件的目标元素以及阈值,排除特定出站链接使他们不会触发出站点击事件,设置需要监视下载行为的文件链接。
Quick GA4 页面脚本的大小和压缩传输大小
Quick GA4 在实现主要功能并提供额外选项的情况下,减少了网络传输,quick-ga4.js
文件大小约为7.0kB
,启用 Brotli 压缩格式后,quick-ga4.js
的传输大小约为3.3kB
。
不使用 gtag.js 向 Google Analytics 发送数据
使用 Quick GA4 后,你的页面不再需要包含 Google 代码(gtag.js
)。由于 Google Analytics 并非gtag.js
唯一针对的目标 ,因此他相对于analytics.js
体积更大,在使用压缩格式后,gtag.js
的传输大小可能在80kB
至90kB
之间(2024 年 2 月份期间的测试结果)。在网络速度不断提升的情况下,100kb
的传输可能不是太大的问题,通过设置script
元素的defer
或async
属性,gtag.js
对页面加载的影响并不大。
选择使用 GA4 第三方页面脚本的原因
出于某种原因,你可能会选择 Google 代码(gtag.js
)以外的 JavaScript 脚本,比如,并不需要gtag.js
包含的所有功能,只想使用其中的某一部分,或网站大部分用户所处的网络无法正常下载gtag.js
,或希望通过节省网络传输来减少碳排放,在以上情况下,Quick GA4 将是一种替代选择。
使用页面脚本 Quick GA4
要在页面中使用 Quick GA4 脚本,只需添加加载quick-ga4.js
的script
元素,并编写配置 GA4 的 JavaScript 代码即可。你可以从 npm 或 GitHub 的相关项目中下载quick-ga4.js
,然后上传至自己的服务器,以下是 Quick GA4 项目在 npm 和 GitHub 的地址。
当然,使用公共 CDN 上存储的quick-ga4.js
也是可行的,以下地址可以通过 jsDelivr 载入最新版本的 Quick GA4 脚本。
这里是一个简单的示例,quick-ga4.js
被放置于网站根目录的js
文件夹中,对象__GA4__
的id
属性表示了数据流对应的衡量 ID(以G-
开头)。脚本载入后,Quick GA4 将向 Google 服务器发送相关的事件和信息。
<script>
<!-- 这里需要替换为 GA4 配置代码 -->
</script>
<script defer="true" src="/js/quick-ga4.js"></script>
window['__GA4__'] = {
id: 'G-XXXXXXXXXX'
}
如何在 Quick GA4 中设置 Google Analytics 的相关内容?
所有关于 Google Analytics 的设置,均通过一段 GA4 配置代码来完成,他会定义一个名为__GA4__
的对象,该对象包含的一系列属性将被用于设置操作。
尽量将 GA4 配置代码放在加载 quick-ga4.js 的 script 元素之前
你需要在脚本quick-ga4.js
真正执行之前,给出 GA4 配置代码,建议将其放在加载quick-ga4.js
的script
元素之前。
设置对应的 Google Analytics 数据流
正如之前示例所演示的,通过把数据流的衡量 ID 赋值给__GA4__
对象的id
属性,Quick GA4 将可以为 Google Analytics 中特定的数据流提供信息。
如果希望指定多个数据流,那么可以采用数组的方式,他类似于id:['G-XXXXXXXXXX','G-XXXXXXXXXX']
,在这种情况下,数据流是共享同一个 GA4 配置的,如果需要为不同数据流指定不同的 GA4 配置,那么可以将__GA4__
对象改为数组,数组中的每一个元素对应一个独立的 GA4 配置。
在下面的示例中,我们尝试为 Quick GA4 指定三个数据流,并分配了两种 GA4 配置,其中一个取消了scroll
事件。
window['__GA4__'] = [
{ id: ['G-XXXXXXXXXX', 'G-XXXXXXXXXX'] },
{ id: 'G-XXXXXXXXXX', event: { scroll: null } }
]
调整 Google Analytics 会话设置
Google Analytics 站点中的会话设置,不会影响 Quick GA4 脚本的运行结果,相反的,你需要在 Quick GA4 中调整会话的功能。__GA4__
对象的session
属性(同样是一个对象)对应了会话,session
包含了以下内容。
- timeout 属性
timeout
属性用于设置会话的超时时间,以秒为单位,默认1800
秒。会话超时后,新的用户活动会产生新的会话。- engagementMin 属性
engagementMin
属性用于设置感兴趣会话计时器阈值,以秒为单位,默认10
秒。会话的交互时间超过该阈值后,将被视为感兴趣会话。- engagementType 属性
engagementMin
属性用于设置计算交互时间的方式,默认为'focus'
。当engagementMin
被设置为'focus'
时,只有页面获得焦点时才会统计交互时间,当engagementMin
被设置为'visible'
时,只有页面可见时才会统计交互时间。
如何选择 Google Analytics 会话交互时间的计算方式?
随着屏幕尺寸的增大和双屏幕的逐渐流行,两个窗口同时出现在桌面的情况会增多,用户可以一遍撰写文字,一边查看浏览器中的资料。即便此时的页面已经失去了焦点,但还是可以将其理解为有价值的时间。如果你希望以这种宽松的方式来计算交互时间,那么可以将engagementMin
设置为'visible'
。
当你希望以严格的方式来计算交互时间时,可以将engagementMin
设置为'focus'
,这会把页面失去焦点的时间排除在外。比如,用户将页面滚动到某一处后,将焦点转移至了另一屏幕的记事本,并开始参考页面中的内容撰写文字,撰写花费的时间不会被统计为交互时间。
下面的 GA4 配置,将 Google Analytics 会话超时时间设置为了15
分钟,将感兴趣会话计时器阈值设置为了20
秒,并采用了较为宽松的交互时间计算方式。
window['__GA4__'] = {
// …
session: { timeout: 900, engagementMin: 20, engagementType: 'visible' }
}
设置页面载入事件 page_view
通过__GA4__
对象event
属性(同样是一个对象)的pageView
属性,你可以设置 Google Analytics 的页面载入事件page_view
,该属性是一个表示page_view
触发条件的字符串,默认为'*'
(除了预渲染以外的任何页面载入形式都将触发page_view
)。
pageView
属性可以从以下项中选择或组合,不同的项之间使用,
(或其他起到正则表达式\b
作用的字符)进行分隔,对于想要排除的项,需要添加^
。比如,'navigate,reload'
表示选择navigate
和reload
两项,'*,^back_forward'
表示选择back_forward
之外的所有项。
- navigate
navigate
项表示当页面通过点击链接,地址栏输入 URL,提交表单操作载入时,触发page_view
事件。- reload
reload
项表示当页面通过刷新载入时,触发page_view
事件。- back_forward
back_forward
项表示当页面通过历史记录操作载入时,触发page_view
事件。- *
*
产生的效果是,除了预渲染以外的任何形式的页面载入都将触发page_view
。
通过下面的 GA4 配置,Quick GA4 不会在页面刷新后,发送page_view
页面载入事件。
window['__GA4__'] = {
// …
event: { pageView: '*,^reload' }
}
设置交互时间事件 user_engagement
__GA4__
对象event
属性的userEngagement
属性,用于表示触发 Google Analytics 交互时间事件的事件,默认为'beforeunload'
(建议采用默认值),他表示在window
的beforeunload
事件中,触发交互时间事件user_engagement
。如果你不希望将页面的交互时间发送至 Google 服务器,那么可以将userEngagement
属性设置为null
,或任何可以被视为false
的值。
__GA4__
对象trigger
属性(同样是一个对象)的userEngagementMin
属性,表示要触发user_engagement
事件,当前页面需要存活的秒数,默认为1
秒。假设页面在打开后的0.5
秒被关闭,那么user_engagement
事件无法被触发。
使用下面的 GA4 配置后,要触发user_engagement
事件,当前页面至少存活3
秒。
window['__GA4__'] = {
// …
trigger: { userEngagementMin: 3 }
}
设置滚动事件 scroll
__GA4__
对象event
属性的scroll
属性,是指向某个滚动元素的 CSS 样式选择器,默认为'body'
。scroll
属性可以解决复杂页面设计带来的一些问题,当主要内容在页面的其他元素中溢出,导致body
元素无法产生滚动条时(这种情况下,Quick GA4 以及 Google 官方的 GA4 脚本可能会百分百触发scroll
事件),你可以指定具有滚动条的元素,成为用于判断是否触发scroll
事件的目标元素。
如果你不希望滚动事件被触发,可以将scroll
属性设置为null
,或任何可以被视为false
的值。
如何设置触发滚动事件的滚动百分比阈值?
在 Google 官方的 GA4 脚本中,只有当页面的滚动范围超过底部90%
时,才会触发scroll
事件。Quick GA4 提供了调整滚动百分比阈值的选项,只需要设置__GA4__
对象trigger
属性的scrollPercentMin
属性(默认为90
)。
不要将滚动百分比阈值设置为 100
如果将scrollPercentMin
属性设置为100
,那么滚动事件scroll
可能无法被触发,因为百分比的计算结果可能只会接近于100
,但无法等于100
,比如99.9
。
滚动事件仅触发一次
在滚动事件scroll
被成功触发后,Quick GA4 不会第二次触发他,即便滚动条再次滚动至底部。
下面的 GA4 配置将id
为my-content
的元素,设置为判断是否触发scroll
事件的目标,当滚动条滚动至底部70%
以下时,滚动事件将被触发。
window['__GA4__'] = {
// …
event: { scroll: '#my-content' },
trigger: { scrollPercentMin: 70 }
}
设置出站点击事件 click
与 Google 官方 GA4 脚本的效果类似,Quick GA4 脚本会发送出站链接的click
点击事件,指向站点内的链接点击则不被统计。如果你不希望出站点击事件被触发,可以将__GA4__
对象event
属性的outbound
属性设置为null
,或任何可以被视为false
的值。
如何让域名不触发出站点击事件?
将event
的outbound
属性设置为一个数组,其中的元素为用于判断域名的正则表达式(或表示正则表达式的字符串),点击这些域名对应的链接,将不会触发出站点击事件。
通过下面的 GA4 配置,Quick GA4 将排除域名为xxx.xxx
或yyy.yyy
的链接,点击他们不会触发出站点击事件click
。
window['__GA4__'] = {
// …
event: { outbound: [/xxx\.xxx/, /yyy\.yyy/] }
}
设置搜索事件 view_search_results
__GA4__
对象event
属性的viewSearchResults
属性,用于设置触发搜索事件view_search_results
的查询参数,查询参数之间使用,
分隔,默认为'q,s,search,query,keyword'
。当浏览器的 URL 出现指定的查询参数之一并具有有效值时,搜索事件将被触发。
如果你不希望搜索事件被触发,可以将__GA4__
对象event
属性的viewSearchResults
属性设置为null
,或任何可以被视为false
的值。
如何为搜索事件添加更多查询参数?
如果你希望view_search_results
事件向 Google 服务器发送更多的查询参数信息,可以通过&
添加其他查询参数,并使用,
分隔他们。
比如,'q,s&name,age'
表示当 URL 中出现参数q
或s
并具有有效值时,搜索事件view_search_results
将被触发,且会尝试发送查询参数name
和age
以及他们的值。
下面的 GA4 配置将通过监视查询参数key
来触发搜索事件,并尝试发送查询参数color
和size
以及他们的值。
window['__GA4__'] = {
// …
event: { viewSearchResults: 'key&color,size' }
}
设置文件下载事件 file_download
__GA4__
对象event
属性的fileDownload
属性是一个正则表达式(或表示正则表达式的字符串),用于判断页面上哪些a
元素应被视为下载文件的链接,默认为'(?<=\\.)(pdf|xlsx?|docx?|txt|rtf|csv|exe|key|pp(s|t|tx)|7z|pkg|rar|gz|zip|avi|mov|mp4|mpe?g|wmv|midi?|mp3|wav|wma)$'
(针对文件扩展名)。
你可以尝试其他的正则表达式来匹配自己的下载链接,比如,/_download_/
将匹配 URL 包含_download_
的链接。
使用下面的 GA4 配置,Quick GA4 将 URL 地址以.cs
,.py
或.js
结尾的链接,视为下载链接,点击他们将触发file_download
事件。
window['__GA4__'] = {
// …
event: { fileDownload: /\.(cs|py|js)$/ }
}
设置 Google Analytics 的代理转发地址
如果站点大部分用户所处的网络,无法正常访问 Google Analytics 服务器,那么收集 Quick GA4 从页面发送的事件将变得困难。遇到这种问题,你可能需要拥有一个用于转发的代理服务,并将代理转发的地址赋值给__GA4__
对象的url
属性,Quick GA4 会通过该属性给出的地址来发送相关的事件和信息。
使用下面的 GA4 配置,Quick GA4 将改变发送事件数据的地址。
window['__GA4__'] = {
// …
url: 'https://xxx.xxx/xxx/xxx'
}
启用 Google Analytics 调试模式
将__GA4__
对象的debug
属性设置为true
,即可开启 Google Analytics 的调试模式,如下面代码所示。
window['__GA4__'] = {
// …
debug: true
}