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平臺進行管理。平台大致長相如下:Google Analytics API¶
講完了網站管理者、行銷人員等一般的GA使用者如何設定與埋入GA代碼,那網站的開發人員呢??這裡提供一種以python 串接GA API的解方,並呈現在這個Pelican Blog上!!
解鎖GA4 API¶
- 點選google cloud,登入!
- 點選選擇專案
- 點選新專案
- 輸入基本資料
啟用API¶
- 點選「API和服務」,「已啟用的API和服務」
- 點選「啟用API和服務」
- 搜尋「 Google Analytics Data API」
- 啟用API!!
建立GCP Service Account¶
- 點選「IAM與管理」,「服務帳戶」
「建立服務帳戶」」,輸入名稱與設定基本資料
此帳戶將用來設定GA的許可權!!!!!
下載金鑰Json檔案¶
- 點選方才建立好的帳戶,點選「金鑰」,「建立金鑰」
- 選擇「Json」
- 注意!!檔案要保存!!!
在GA中添加許可權¶
- 回到GA管理平台,點選「管理」
- 點選「資源存取權管理」
- 新增!!!
- 輸入剛才建立的服務帳戶,設定管理權限(大於檢視者即可)
- 回到「管理」,「資源詳情」
- 記住「資源ID」(Property ID)
大功告成!!¶
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,請大家小心服用,或是看英文原文。
將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
- 整理完如下
在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>