利用 Measurement Protocol API 就可以透過 HTTP POST 的形式,讓 GA4 接收無法安裝 gtag.js 或 GTM 的環境所發送的事件 ( 例如後端伺服器、單晶片、email...等 ),藉此輕鬆評估這些環境和使用者之間的互動,這篇教學會介紹使用 Python、JavaScript 和 Apps Script,操作 Measurement Protocol API 並傳遞相關事件。
Measurement Protocol API 是從通用版 GA 就已經存在的功能,可以使用 HTTP 的方式傳送對應的事件,在通用版 GA 裡可以使用 GET 的方式進行觸發 ( 時常作為追蹤 Email 開信率 使用,但 GA4 的做法有所不同 ),進入 GA4 之後,Measurement Protocol API 改成一率使用 POST 方法進行傳輸事件,並加入 api_secret ( 密鑰 ) 機制,只有擁有 api_secret 才能傳送事件,下方列出 Google 官方提供的架構圖 ( 原圖參考 )。
初次接觸 Measurement Protocol API 時,可能會不了解它的用途,以下列出一些常見的用途:
接收後端伺服器所觸發的事件
由於 GA4 本身沒有提供後端的 js,但後端工程師而言卻可以藉由 Measurement Protocol API 來記錄一些觸發資訊。
接收無法安裝 gtag.js 或 GTM 的資訊
有些環境並不允許安裝 gtag.js 或 GTM ( 例如 Email、單晶片...等 ),透過 Measurement Protocol API,就能在觸發特定事件時,傳送對弈的資料。
雖然 Measurement Protocol API 看起來很方便,但仍有一些使用上的限制:
- 無法紀錄持續時間資訊 ( 每次觸發都是獨立的 )。
- 每個要求 ( request ) 最多可有 25 個事件。
- 每個事件最多只能有 25 個參數。
- 每個事件最多只能有 25 個使用者屬性。
- 每個使用者屬性的名稱不能超過 24 個半形字元。
- 每個使用者屬性的值不能超過 36 個半形字元。
- 每個事件名稱不能超過 40 個字元,只能使用英文字母、數字和底線,且必須以字母為開頭。
- 每個參數名稱不能超過 40 個字元,只能使用英文字母、數字和底線,且必須以字母為開頭。
- 每個參數值不能超過 100 個字元。
- 每個項目參數最多只能有 10 個自訂參數。
- 傳遞的資訊必須小於 130 KB。
前往 GA4 的「管理 > 資源 > 資料串流」,點擊已經建立好的資料串流。
進入資料串流後,在最上方能夠看見「評估 ID」,點擊下方「Measurement Protocol API 密鑰」開始建立密鑰。
點擊「建立」,就能夠建立一組 Measurement Protocol API 密鑰。
修改下方的 Python 程式碼後,替換自己的評估 ID 和密鑰,執行後就會使用 Measurement Protocol API 將想要傳遞給事件,透過 http request 的 POST 方法發送到 GA4,發送的 cient_id 為 111.111 ( 識別 ID,根據自己的狀況進行更換 ),事件名稱為 oxxo_python,包含參數 ok,參數值為 true。
import requests, json
# 更換評估 ID 和密鑰
url = 'https://www.google-analytics.com/mp/collect?measurement_id=你的評估ID&api_secret=你的密鑰'
payload = {
'client_id': '111.111',
'events': [{
'name': 'oxxo_python',
'params': {
'ok':'true'
},
}]
}
requests.post(url,data=json.dumps(payload),verify=True)
執行後,在 GA4 的即時報表裡,就會看見出現傳送的 oxxo_python 事件。
修改下方的 Python 程式碼後,替換自己的評估 ID 和密鑰,執行後就會使用 Measurement Protocol API 將想要傳遞給事件,透過 http request 的 POST 方法發送到 GA4,發送的 cient_id 為 222.222 ( 識別 ID,根據自己的狀況進行更換 ),事件名稱為 oxxo_javascript,包含參數 ok,參數值為 true。
// 更換評估 ID 和密鑰
fetch(`https://www.google-analytics.com/mp/collect?measurement_id=你的評估ID&api_secret=你的密鑰`, {
method: "POST",
body: JSON.stringify({
client_id: '222.222',
events: [{
name:'oxxo_javascript',
params: {
'ok':'true'
}
}]
})
});
執行後,在 GA4 的即時報表裡,就會看見出現傳送的 oxxo_javascript 事件。
修改下方的 Apps Script 程式碼後 ( 參考 Apps Script ),替換自己的評估 ID 和密鑰,執行後就會使用 Measurement Protocol API 將想要傳遞給事件,透過 http request 的 POST 方法發送到 GA4,發送的 cient_id 為 333.333 ( 識別 ID,根據自己的狀況進行更換 ),事件名稱為 oxxo_apps_script,包含參數 ok,參數值為 true。
function myFunction() {
var url = 'https://www.google-analytics.com/mp/collect?measurement_id=你的評估ID&api_secret=你的密鑰';
UrlFetchApp.fetch(url, {
'headers': {
'Content-Type': 'application/json',
},
'method': 'post',
'payload': JSON.stringify({
'client_id': '333.333',
'events': [{
'name': 'oxxo_apps_script',
'params': {
'ok':'true'
},
}]
})
});
}
執行後,在 GA4 的即時報表裡,就會看見出現傳送的 oxxo_apps_script 事件。
如果是第一次使用,因為要發送 http request 到外部環境,所以需要允許權限才能操作。
Measurement Protocol API 是一個對開發者而言,非常好用的功能,透過 Measurement Protocol API 就能夠輕鬆接收後端觸發的資料,也更能將 GA4 延伸到許多像是單晶片、電子報、EDM...等無法安裝 gtag.js 或 GTM 的領域。
大家好,我是 OXXO,是個即將邁入中年的斜槓青年,我有個超過一千篇教學的 STEAM 教育學習網,有興趣可以參考下方連結呦~ ^_^