WebMix

透過 GA4 提供的 API,取得線上即時人數(使用 Node.js)

這個網站使用 GA4 來追蹤流量,所以可以從 GA4 的後台,看到流量的狀況。其中有一個數據想要抓出來呈現在網頁上的,那就是「線上即時人數」。如下圖的 "2":

取得線上即時人數的示意圖

相關 API,可以透過 Analytics Data API 總覽 來瀏覽官方上的一些說明,此篇文章僅展示的確有使用 Node.js 來取得資料成功。

第一步:先申請取得相關的 key

先進到 這個網址,裡面有個按鈕,如下示意圖:

申請 GA4 API 的相關 Key

直接按照藍色按鈕點下去之後的步驟操作即可,最後會取得一個檔案,開啟後會如下資訊,是後面程式會用到的,以下的資料這邊直接刪掉,你應該用自己的:

{
  "type": "",
  "project_id": "",
  "private_key_id": "",
  "private_key": "",
  "client_email": "",
  "client_id": "",
  "auth_uri": "",
  "token_uri": "",
  "auth_provider_x509_cert_url": "",
  "client_x509_cert_url": ""
}

第二步:取得資源 ID

如下示意圖,可在 GA4 的後台,取得資源 ID:

示意圖 1:

示意圖1:取得資源 ID

示意圖 2:

示意圖2:取得資源 ID

第三步:後端程式 - Node.js

以下提供 Node.js 所撰寫的主要原始碼

let propertyId = "abcde"; // 這裡要放資源 ID

// 這裡放入上方第一步取得的物件資料
const analyticsDataClient = new BetaAnalyticsDataClient({
  "credentials": {
    "type": "",
    "project_id": "",
    "private_key_id": "",
    "private_key": "",
    "client_email": "",
    "client_id": "",
    "auth_uri": "",
    "token_uri": "",
    "auth_provider_x509_cert_url": "",
    "client_x509_cert_url": ""
  }
});

async function runReport() {

  const [response] = await analyticsDataClient.runRealtimeReport({ // 抓即時報表
    property: `properties/${propertyId}`,
    metrics: [{ name: 'activeUsers' }]
  });

  let activeUsers = 0; // 先假設即時人數為 0

  response.rows.forEach(row => {
    activeUsers = row.metricValues[0].value; // 取得真實的即時人數,放到變數 activeUsers 中。
  });
  res.json({ // 回傳資料
    realtimeActiveUsers: activeUsers
  });
}
runReport();

第四步:前端 JavaScript 程式

前端很單純,只要後端提供 API 之後,前端就直接 call API,就可以取得回傳的資料了

fetch("放自己的後端 API 網址").then(res => res.json()).then(body => {
  console.log( body.realtimeActiveUsers ); // 取得後端回傳的資料印出來
});

結果實測

1

作者

賓(Carlos)

賓(Carlos)

  • 網站開發者
  • 網站開發講師

合作洽談,請 Email 聯繫: chang.abin@gmail.com