Google Analytics 第三方輕量最小化頁面腳本 Quick GA4 使用說明
先決條件
閱讀本節的先決條件是對 Google Analytics 的主要事件有所掌握,你可以檢視Google Analytics 頁面腳本事件的具體含義和觸發條件一節來了解他們。
頁面腳本 Quick GA4
Quick GA4(quick-ga4.js
)是一個免費的 Google Analytics 第三方輕量最小化頁面腳本(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
對頁面載入的影響並不大。
選擇使用 Google Analytics 第三方頁面腳本的原因
出於某種原因,你可能會選擇 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
元素之前。
為 Quick GA4 設定對應的 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 } }
]
在 Quick GA4 中調整 Google Analytics 工作階段設定
Google Analytics 站點中的工作階段設定,不會影響 Quick GA4 腳本的執行結果,相反的,你需要在 Quick GA4 中調整工作階段的功能。__GA4__
物件的session
屬性(同樣是一個物件)對應了工作階段,session
包含了以下內容。
- timeout 屬性
timeout
屬性用於設定 Google Analytics 工作階段的逾時時間,以秒為單位,預設1800
秒。工作階段逾時後,新的使用者活動會產生新的工作階段。- engagementMin 屬性
engagementMin
屬性用於設定 Google Analytics 互動工作階段計時器閾值,以秒為單位,預設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' }
}
在 Quick GA4 中設定頁面載入事件 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' }
}
在 Quick GA4 中設定互動時間事件 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 }
}
在 Quick GA4 中設定捲動事件 scroll
__GA4__
物件event
屬性的scroll
屬性,是指向某個捲動元素的 CSS 樣式選取器,預設為'body'
。scroll
屬性可以解決複雜頁面設計帶來的一些問題,當主要內容在頁面的其他元素中溢出,導致body
元素無法產生捲軸時(這種情況下,Quick GA4 以及 Google 官方的 GA4 腳本可能會百分百觸發scroll
事件),你可以指定具有捲軸的元素,成為用於判斷是否觸發scroll
事件的目標元素。
如果你不希望捲動事件被觸發,可以將scroll
屬性設定為null
,或任何可以被視為false
的值。
如何在 Quick GA4 中設定觸發捲動事件 scroll 的捲動百分比閾值?
在 Google 官方的 GA4 腳本中,只有當頁面的捲動範圍超過底部90%
時,才會觸發scroll
事件。Quick GA4 提供了調整捲動百分比閾值的選項,只需要設定__GA4__
物件trigger
屬性的scrollPercentMin
屬性(預設為90
)。
不要將 Quick GA4 中的捲動百分比閾值設定為 100
如果將scrollPercentMin
屬性設定為100
,那麽捲動事件scroll
可能無法被觸發,因為百分比的計算結果可能只會接近於100
,但無法等於100
,比如99.9
。
Quick GA4 中的捲動事件 scroll 僅觸發一次
在捲動事件scroll
被成功觸發後,Quick GA4 不會第二次觸發他,即便捲軸再次捲動至底部。
下面的 GA4 設定將id
為my-content
的元素,設定為判斷是否觸發scroll
事件的目標,當捲軸捲動至底部70%
以下時,捲動事件將被觸發。
window['__GA4__'] = {
// …
event: { scroll: '#my-content' },
trigger: { scrollPercentMin: 70 }
}
在 Quick GA4 中設定外連點選事件 click
與 Google 官方 GA4 腳本的效果類似,Quick GA4 腳本會傳送出站連結的click
點選事件,指向站點內的連結點選則不被統計。如果你不希望外連點選事件被觸發,可以將__GA4__
物件event
屬性的outbound
屬性設定為null
,或任何可以被視為false
的值。
如何在 Quick GA4 中讓網域名稱不觸發外連點選事件 click?
將event
的outbound
屬性設定為一個陣列,其中的元素為用於判斷網域名稱的規則運算式(或表示規則運算式的字串),點選這些網域名稱對應的連結,將不會觸發外連點選事件。
通過下面的 GA4 設定,Quick GA4 將排除網域名稱為xxx.xxx
或yyy.yyy
的連結,點選他們不會觸發外連點選事件click
。
window['__GA4__'] = {
// …
event: { outbound: [/xxx\.xxx/, /yyy\.yyy/] }
}
在 Quick GA4 中設定搜尋事件 view_search_results
__GA4__
物件event
屬性的viewSearchResults
屬性,用於設定觸發搜尋事件view_search_results
的查詢參數,查詢參數之間使用,
分割,預設為'q,s,search,query,keyword'
。當瀏覽器的 URL 出現指定的查詢參數之一並具有有效值時,搜尋事件將被觸發。
如果你不希望搜尋事件被觸發,可以將__GA4__
物件event
屬性的viewSearchResults
屬性設定為null
,或任何可以被視為false
的值。
如何在 Quick GA4 中為搜尋事件 view_search_results 新增更多查詢參數?
如果你希望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' }
}
在 Quick GA4 中設定檔案下載事件 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)$/ }
}
在 Quick GA4 中設定 Google Analytics 的代理轉送位址
如果站點大部分使用者所處的網路,無法正常存取 Google Analytics 伺服器,那麽收集 Quick GA4 從頁面傳送的事件將變得困難。遇到這種問題,你可能需要擁有一個用於轉送的代理服務,並將代理轉送的位址指派給__GA4__
物件的url
屬性,Quick GA4 會通過該屬性給出的位址來傳送相關的事件和資訊。
使用下面的 GA4 設定,Quick GA4 將改變傳送事件資料的位址。
window['__GA4__'] = {
// …
url: 'https://xxx.xxx/xxx/xxx'
}
在 Quick GA4 中啟用 Google Analytics 偵錯模式
將__GA4__
物件的debug
屬性設定為true
,即可開啟 Google Analytics 的偵錯模式,如下面程式碼所示。
window['__GA4__'] = {
// …
debug: true
}