Google Analytics Usage

Google Analytics 通常會簡稱GA,目前最金可支援的版本為GA4,前身是舊式的通用(General)GA,兩者功能上大同小異,但數據展示與後端邏輯有些許不同。點進連結我們可以在標題看到Analytics(分析)的字樣,所以它其實就是一個Google的分析工具。透過將代碼埋入網頁中,便可以追蹤訪客於網頁的行為,可以讓我們知道每天有多少人造訪網站、使用者在我的網站停留多久、會不會很快就跳出我的網站、使用者的來源分析、甚至是如購物網站中點擊與購買的轉換分析。同時我們也可以設定日期區間,去查尋當時的網站訪客行為與狀況,也能對比查看某個日期區間與某個日期區間的比較。透過這些資訊,有助於我們去分析並改善網站的介面操作、資訊甚至是SEO排名,簡單來說使用Google Analytics就是了解客戶行為!因此也是網站管理者、行銷人員必備的工具之一!

代碼植入與原理

GA到底要如何使用呢???首先不免俗的,要先註冊一個google帳號:

  • 前往GA的首頁
  • 在「管理」頁面,點擊「建立」,然後選取「帳戶」
  • 輸入帳戶名稱。點擊「資料共用設定」, 進行Google 共用資料的設定
  • 按一下「繼續」新增帳戶的第一項資源
  • 剩下的都依照各位的需求進行輸入
  • 最後「新增資料串流」,以網站為例,選擇「直接在網頁上加入 Google 代碼」

GA代碼是由Jaascripts所編寫的大致長相如下:

<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-XXXXXXXX-X"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());

  gtag('config', 'UA-XXXXXXXX-X');
</script>

因此只要將這個代碼埋入html網頁的 標籤內,作為網頁的元資訊(metadata),這段代碼就會將網站使用者的行為資料傳給GA伺服器,記錄起來,使用者便可以透過GA平臺進行管理。平台大致長相如下: image.png

Google Analytics API

講完了網站管理者、行銷人員等一般的GA使用者如何設定與埋入GA代碼,那網站的開發人員呢??這裡提供一種以python 串接GA API的解方,並呈現在這個Pelican Blog上!!

解鎖GA4 API

  • 點選google cloud,登入! image.png
  • 點選選擇專案 image-3.png
  • 點選新專案 image-2.png
  • 輸入基本資料 image-4.png

啟用API

  • 點選「API和服務」,「已啟用的API和服務」 image-5.png
  • 點選「啟用API和服務」 image-6.png
  • 搜尋「 Google Analytics Data API」 image-7.png
  • 啟用API!! image-8.png

建立GCP Service Account

  • 點選「IAM與管理」,「服務帳戶」 image-9.png
  • 「建立服務帳戶」」,輸入名稱與設定基本資料
    image-10.png

  • 此帳戶將用來設定GA的許可權!!!!!

下載金鑰Json檔案

  • 點選方才建立好的帳戶,點選「金鑰」,「建立金鑰」
  • 選擇「Json」
  • 注意!!檔案要保存!!! image-11.png

在GA中添加許可權

  • 回到GA管理平台,點選「管理」 image-12.png
  • 點選「資源存取權管理」 image-13.png
  • 新增!!! image-14.png
  • 輸入剛才建立的服務帳戶,設定管理權限(大於檢視者即可) image-15.png
  • 回到「管理」,「資源詳情」 image-16.png
  • 記住「資源ID」(Property ID) image-17.png

大功告成!!

Python 程式碼查詢

import 函式庫

必要用到的函式庫如下

import os
import pandas as pd
import itertools
from google.analytics.data_v1beta import BetaAnalyticsDataClient
from google.analytics.data_v1beta.types import (
    DateRange,
    Dimension,
    Metric,
    RunReportRequest,
)

應該會需要另外安裝"google-analytics-data"(想當初我找了一陣子哼哼)

pip install google-analytics-data

定義基本資料!!

以下定義一些基本資料,property_ID是剛才在GA中查到的「資源ID」,starting_date與ending_date是查詢的起迄時間。 最後,指定剛剛下載的Json金鑰。

property_ID="xxxxxxxxx" #在GA中查到的資源ID
starting_date = "2024-1-1"
ending_date = "today"
os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = 'projct-name-xxxxxx-xxxxxxxxxxxx.json' #剛才下載的Json金鑰

GA4 request

以下提供一個簡單的範例,傳遞request到GA4 API中!!

client = BetaAnalyticsDataClient()
request_api = RunReportRequest(
    property=f"properties/{property_ID}",
    dimensions=[
        Dimension(name="pagePath"),
        Dimension(name="pageTitle")
        ],
        metrics=[
            Metric(name="screenPageViews"),
            Metric(name="totalUsers"),
            Metric(name="newUsers")
        ],
        date_ranges=[DateRange(start_date=starting_date, end_date=ending_date)],
    )
response = client.run_report(request_api)

在這裡我查詢了“pagePath”(頁面路徑),"pageTitle"(頁面標題)等dimension(維度);另外metric(指標)選用"screenPageViews"(頁面閱覽次數),"totalUsers"(總使用者),"newUsers"(新使用者)等等,大家可以針對自己想要關注的資料進行查詢。確切要查詢什麼欄位可以參考官方的API 維度與指標。但不得不說官方這裡的翻譯實在有夠鳥XDD,請大家小心服用,或是看英文原文。 image.png

將response 整理成dataframe

def query_data(api_response):
    dimension_headers = [header.name for header in api_response.dimension_headers]
    metric_headers = [header.name for header in api_response.metric_headers]
    dimensions = []
    metrics = []
    for i in range(len(dimension_headers)):
        dimensions.append([row.dimension_values[i].value for row in api_response.rows])
    dimensions
    for i in range(len(metric_headers)):
        metrics.append([row.metric_values[i].value for row in api_response.rows])
    headers = dimension_headers, metric_headers
    headers = list(itertools.chain.from_iterable(headers))   
    data = dimensions, metrics
    data = list(itertools.chain.from_iterable(data))
    df = pd.DataFrame(data)
    df = df.transpose()
    df.columns = headers
    return df
  • 整理完如下 image.png

在Pelican頁面中呈現!!

到這裡,你已經會利用Google Analytics的API了,那要如何將查詢到的資料呈現在Pelican Blog中呢?? 在pelicanconf.py中加入剛剛的程式碼,並將數值以全大寫的constant進行儲存。

df = query_data(response)
TOTAL_VIEWS = df["screenPageViews"].astype(int).sum()
TOTAL_USERS = df["totalUsers"].astype(int).sum()

最後在想要呈現的地方,(inedex.html i.e.)以兩個大括號的形式"{{ }}",透過Jinja2的引擎,便可以存取變數了!!

<div class="stats__col">
    <div class="stats__count">
        {{TOTAL_USERS}}
    </div>
    <h4>Visitors</h4>
</div>
boba-icon
請我喝珍奶!