使用Node.js與Google Analytics API互動
學習如何使用官方的googleapis
套件,在Node.js應用程式中與Google Analytics API互動。我們將使用JSON Web Token並看一些範例。
注意:uBlock Origin封鎖這篇文章中的圖片,因為路徑中含有「analytics」這個詞。所以請確保在此頁面上禁用它,以便看到圖片。🖼
在這篇文章中,我將展示如何使用Node.js和Google Analytics API的一些範例。
- 環境變數
- 將使用者新增至Google Analytics
- 匯入Google庫
- 定義範圍
- Google Analytics報告API
- 建立JWT
- 執行請求
- 指標
- 常見程式碼
- 取得今日會話數
- 取得來自有機來源(搜尋引擎)的今日會話數
- 取得昨日會話數
- 取得過去30天的會話數
- 取得過去30天內使用的瀏覽器
- 取得使用Chrome的訪客數
- 按流量來源取得會話數
- Google Analytics即時API
Google提供了一個很棒的npm套件:googleapis
。我們將使用它作為我們API互動的基礎建構塊。
驗證是與API互動的重要部分。請查看這篇關於如何驗證Google API的文章。在本文中,我假設您已經閱讀了那篇文章,並且知道如何執行JWT驗證。
環境變數
一旦從Google下載了JSON金鑰文件,將client_email
和private_key
值設定為環境變數,以便通過以下方式存取:
process.env.CLIENT_EMAIL
process.env.PRIVATE_KEY
將使用者新增至Google Analytics
由於在這些範例中使用了服務對服務API,您需要將client_email
值添加到您的Google Analytics配置文件中。轉到「管理」面板,然後在屬性或視圖中點擊「使用者管理」。
然後新增您在JSON文件中找到的client_email
鍵中的電子郵件:
匯入Google庫
1 | const { google } = require('googleapis') |
請記住將{}
放在google
物件周圍,因為我們需要從googleapis
庫中解構出它(否則我們需要調用google.google
,這樣看起來並不漂亮)。
定義範圍
以下代碼行設置了範圍:
1 | const scopes = 'https://www.googleapis.com/auth/analytics.readonly' |
Google Analytics API定義了多個範圍:
https://www.googleapis.com/auth/analytics.readonly
:查看數據https://www.googleapis.com/auth/analytics
:查看和管理數據https://www.googleapis.com/auth/analytics.edit
:編輯管理實體https://www.googleapis.com/auth/analytics.manage.users
:管理帳戶使用者和權限https://www.googleapis.com/auth/analytics.manage.users.readonly
:查看使用者及其權限https://www.googleapis.com/auth/analytics.provision
:創建新的Google Analytics帳戶
您應該始終選擇授予最少權限的範圍。
由於我們希望僅查看報告,所以這裡選擇了https://www.googleapis.com/auth/analytics.readonly
,而不是https://www.googleapis.com/auth/analytics
。
Google Analytics報告API
注意:您也可以使用“Google Analytics報告API”來訪問這些權限。
這是Google Analytics API的簡化版本,僅提供範圍https://www.googleapis.com/auth/analytics.readonly
和https://www.googleapis.com/auth/analytics
。
然而,有關如何使用它以及它提供的方法的使用方式與Analytics API稍有不同,所以我們將跳過該部分。
建立JWT
1 | const jwt = new google.auth.JWT(process.env.CLIENT_EMAIL, null, process.env.PRIVATE_KEY, scopes) |
執行請求
檢查以下程式碼:
1 | const { google } = require('googleapis') |
它向Google Analytics API發出請求,以獲取過去30天內的頁面視圖數。
view_id
包含檢視的ID。不是您的Google Analytics代碼,而是檢視ID。您可以從管理面板中獲取它,方法是點擊要訪問的視圖上的查看設定:
您將這個物件傳遞到請求中:
1 | { |
除了jwt物件和檢視ID之外,我們還有3個參數。
metrics
:告訴API我們要獲取什麼。start-date
:定義報告的起始日期。end-date
:定義報告的結束日期。
這個請求非常簡單,返回在指定時間段內發生的頁面視圖數。
返回的結果將類似於:
1 | { |
您可以通過response.data.rows[0][0]
訪問頁面視圖計數。
指標
這個例子很簡單。我們只是要求以下數據:
1 | { |
有許多數據可以使用。
Dimensions & Metrics Explorer是一個很棒的工具,可以發現所有選項。
這些術語是Google Analytics的兩個概念。
Dimensions是屬性,例如城市、國家或頁面、引薦路徑或會話持續時間。
Metrics是定量測量,例如使用者數或會話數。
一些指標的例子:
- 獲取頁面視圖
ga:pageviews
- 獲取獨立使用者
ga:users
- 獲取會話數
ga:sessions
- 獲取有機搜索
ga:organicSearches
讓我們使用這些指標來構建一些範例。
常見程式碼
以下是在下面的範例中使用的常見程式碼。將此片段放在「authorize()」的回調中。
1 |
|
defaults
物件將在以下幾個範例中使用展開運算符,這是JavaScript中處理默認值的方便方式。
取得今日會話數
1 | const result = await google.analytics('v3').data.ga.get({ |
取得來自有機來源(搜尋引擎)的今日會話數
添加filters
屬性:
1 | const result = await google.analytics('v3').data.ga.get({ |
取得昨日會話數
1 | const result = await google.analytics('v3').data.ga.get({ |
取得過去30天的會話數
1 | const result = await google.analytics('v3').data.ga.get({ |
取得過去30天內使用的瀏覽器
1 | const result = await google.analytics('v3').data.ga.get({ |
1 | [ |
取得使用Chrome的訪客數
1 | const result = await google.analytics('v3').data.ga.get({ |
按流量來源取得會話數
1 | const result = await google.analytics('v3').data.ga.get({ |
1 | [ |
Google Analytics即時API
Google Analytics即時API目前(2018年5月)處於私有測試階段,並且無法公開訪問。請參閱此頁。