搜尋

使用 Measurement Protocol API 收集資料

利用 Measurement Protocol API 就可以透過 HTTP POST 的形式,讓 GA4 接收無法安裝 gtag.js 或 GTM 的環境所發送的事件 ( 例如後端伺服器、單晶片、email...等 ),藉此輕鬆評估這些環境和使用者之間的互動,這篇教學會介紹使用 Python、JavaScript 和 Apps Script,操作 Measurement Protocol API 並傳遞相關事件。

快速導覽:

什麼是 Measurement Protocol API?

Measurement Protocol API 是從通用版 GA 就已經存在的功能,可以使用 HTTP 的方式傳送對應的事件,在通用版 GA 裡可以使用 GET 的方式進行觸發 ( 時常作為追蹤 Email 開信率 使用,但 GA4 的做法有所不同 ),進入 GA4 之後,Measurement Protocol API 改成一率使用 POST 方法進行傳輸事件,並加入 api_secret ( 密鑰 ) 機制,只有擁有 api_secret 才能傳送事件,下方列出 Google 官方提供的架構圖 ( 原圖參考 )。

GA4 教學 ( Google Analytics 4 ) - 使用 Measurement Protocol API 收集資料 - Measurement Protocol 架構

Measurement Protocol API 的用途與限制

初次接觸 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。

開始使用 Measurement Protocol API

前往 GA4 的「管理 > 資源 > 資料串流」,點擊已經建立好的資料串流。

GA4 教學 ( Google Analytics 4 ) - 使用 Measurement Protocol API 收集資料 - 資料串流

進入資料串流後,在最上方能夠看見「評估 ID」,點擊下方「Measurement Protocol API 密鑰」開始建立密鑰。

GA4 教學 ( Google Analytics 4 ) - 使用 Measurement Protocol API 收集資料 - 評估 ID 與建立密鑰

點擊「建立」,就能夠建立一組 Measurement Protocol API 密鑰。

GA4 教學 ( Google Analytics 4 ) - 使用 Measurement Protocol API 收集資料 - Measurement Protocol API 密鑰

使用 Python 操作

修改下方的 Python 程式碼後,替換自己的評估 ID 和密鑰,執行後就會使用 Measurement Protocol API 將想要傳遞給事件,透過 http request 的 POST 方法發送到 GA4,發送的 cient_id 為 111.111 ( 識別 ID,根據自己的狀況進行更換 ),事件名稱為 oxxo_python,包含參數 ok,參數值為 true。

參考:Flask 函式庫Python 教學 ( 學習導讀 )

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 事件。

GA4 教學 ( Google Analytics 4 ) - 使用 Measurement Protocol API 收集資料 - 使用 Python 操作

使用 JavaScript 操作

修改下方的 Python 程式碼後,替換自己的評估 ID 和密鑰,執行後就會使用 Measurement Protocol API 將想要傳遞給事件,透過 http request 的 POST 方法發送到 GA4,發送的 cient_id 為 222.222 ( 識別 ID,根據自己的狀況進行更換 ),事件名稱為 oxxo_javascript,包含參數 ok,參數值為 true。

參考:JavaScript Fetch API 使用教學

// 更換評估 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 事件。

GA4 教學 ( Google Analytics 4 ) - 使用 Measurement Protocol API 收集資料 - 使用 JavaScript 操作

使用 Apps Script 操作

修改下方的 Apps Script 程式碼後 ( 參考 Apps Script ),替換自己的評估 ID 和密鑰,執行後就會使用 Measurement Protocol API 將想要傳遞給事件,透過 http request 的 POST 方法發送到 GA4,發送的 cient_id 為 333.333 ( 識別 ID,根據自己的狀況進行更換 ),事件名稱為 oxxo_apps_script,包含參數 ok,參數值為 true。

參考:簡易後端實作 ( Google Apps Script )

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 事件。

GA4 教學 ( Google Analytics 4 ) - 使用 Measurement Protocol API 收集資料 - 使用 Apps Script 操作

如果是第一次使用,因為要發送 http request 到外部環境,所以需要允許權限才能操作。

GA4 教學 ( Google Analytics 4 ) - 使用 Measurement Protocol API 收集資料 - Apps Script 允許權限

小結

Measurement Protocol API 是一個對開發者而言,非常好用的功能,透過 Measurement Protocol API 就能夠輕鬆接收後端觸發的資料,也更能將 GA4 延伸到許多像是單晶片、電子報、EDM...等無法安裝 gtag.js 或 GTM 的領域。

參考

意見回饋

如果有任何建議或問題,可傳送「意見表單」給我,謝謝~

GA4 教學

介紹與設定

GA4 教學導讀 認識 GA4 通用版 GA 與 GA4 的差異 建立 GA4 分析資源 安裝 GA4 資料收集代碼 刪除/還原/移動帳戶資源

快速開始&測試

設定輔助程式 使用測試網頁 啟用示範帳戶

使用 GTM

認識 GTM 開始使用 GTM GTM 與 gtag.js 的差異 加入 Google 代碼 加入 GA4 事件代碼 設定觸發條件 設定變數 安裝 Facebook 像素

事件

加強型評估事件 自動收集事件 建議事件 自訂事件 修改與建立事件 標示轉換事件 設定轉換事件價值 設定電子商務事件

資料收集

啟用 Google 信號 使用 User-ID 建立目標對象 使用 DebugView 測試 資料&報表篩選器 資料保留期限&更新間隔 跨網域追蹤 使用 UTM 收集資料 Measurement Protocol 資料匯入 共用及匯出報表 連結 Search Console

資料解讀

認識維度和指標 自訂維度和指標 使用者屬性 工作階段&互動工作階段 參與度&跳出率 使用者&新使用者

報表

集合&主題&報表 首頁 深入分析 自訂報表、主題和集合 報表數據匯報 即時報表 到達網頁報表 網頁和畫面報表 事件報表 轉換報表 獲取新客報表 流量開發報表 電子商務購買報表 使用者購物歷程報表 回訪率報表 客層詳情報表 技術詳情報表

探索

認識探索報表 設定探索報表 任意形式 同類群組探索 漏斗探索 區隔重疊 路徑探索 使用者生命週期 使用者多層檢視

廣告&歸因

歸因模式&歸因分析 廣告數據匯報 所有頻道成效報表 模式比較報表 轉換路徑報表

實際應用

同時使用多組資料串流 追蹤 Email 開信率 追蹤網頁捲動高度 追蹤網頁元素點擊 觀察特定頁面成效 篩選並排除內部流量

GA4 認證考古題

如何進行與準備認證 考題 - 設定&觀念 考題 - 事件&維度&指標 考題 - 報表&探索&廣告 考題 - 其他