google-analytics

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese
Query Google Analytics 4 via
curl + jq
. The user's OAuth bearer token is in
$GOOGLE_ANALYTICS_TOKEN
(scope
analytics.readonly
); every call needs
Authorization: Bearer $GOOGLE_ANALYTICS_TOKEN
. Two APIs: the Admin API (
analyticsadmin.googleapis.com/v1beta
) to discover properties, and the Data API (
analyticsdata.googleapis.com/v1beta
) to run reports.
Failures are
{"error":{"code","message","status"}}
— show verbatim.
401
= re-install.
bash
AUTH="Authorization: Bearer $GOOGLE_ANALYTICS_TOKEN"
通过
curl + jq
查询Google Analytics 4。用户的OAuth承载令牌存储在
$GOOGLE_ANALYTICS_TOKEN
中(权限范围为
analytics.readonly
);每次调用都需要携带
Authorization: Bearer $GOOGLE_ANALYTICS_TOKEN
。涉及两个API:用于发现属性的Admin API
analyticsadmin.googleapis.com/v1beta
),以及用于生成报告的Data API
analyticsdata.googleapis.com/v1beta
)。
失败信息格式为
{"error":{"code","message","status"}}
— 需原样展示。
401
错误表示需要重新安装。
bash
AUTH="Authorization: Bearer $GOOGLE_ANALYTICS_TOKEN"

List the GA4 properties the user can access (via their account summaries)

列出用户可访问的GA4属性(通过账户摘要)

curl -sS -H "$AUTH" "https://analyticsadmin.googleapis.com/v1beta/accountSummaries"
| jq '.accountSummaries[]?.propertySummaries[]? | {property, displayName}'

`property` looks like `properties/123456789` — the number is the `PROPERTY_ID`.
curl -sS -H "$AUTH" "https://analyticsadmin.googleapis.com/v1beta/accountSummaries"
| jq '.accountSummaries[]?.propertySummaries[]? | {property, displayName}'

`property`的格式类似`properties/123456789` — 其中的数字即为`PROPERTY_ID`。

Run a report

生成报告

bash
PID="123456789"
curl -sS -X POST -H "$AUTH" -H "Content-Type: application/json" -d '{
  "dateRanges":[{"startDate":"28daysAgo","endDate":"today"}],
  "dimensions":[{"name":"pagePath"}],
  "metrics":[{"name":"screenPageViews"},{"name":"activeUsers"}],
  "orderBys":[{"metric":{"metricName":"screenPageViews"},"desc":true}],
  "limit":10
}' "https://analyticsdata.googleapis.com/v1beta/properties/$PID:runReport" \
  | jq '.rows[] | {page: .dimensionValues[0].value, views: .metricValues[0].value, users: .metricValues[1].value}'
Swap dimensions/metrics for other reports:
sessionDefaultChannelGroup
+
sessions
(acquisition),
country
+
activeUsers
(geo),
eventName
+
eventCount
/
conversions
(events). Dates accept
NdaysAgo
,
today
,
yesterday
, or
YYYY-MM-DD
.
bash
PID="123456789"
curl -sS -X POST -H "$AUTH" -H "Content-Type: application/json" -d '{
  "dateRanges":[{"startDate":"28daysAgo","endDate":"today"}],
  "dimensions":[{"name":"pagePath"}],
  "metrics":[{"name":"screenPageViews"},{"name":"activeUsers"}],
  "orderBys":[{"metric":{"metricName":"screenPageViews"},"desc":true}],
  "limit":10
}' "https://analyticsdata.googleapis.com/v1beta/properties/$PID:runReport" \
  | jq '.rows[] | {page: .dimensionValues[0].value, views: .metricValues[0].value, users: .metricValues[1].value}'
可替换维度/指标以生成其他报告:
sessionDefaultChannelGroup
+
sessions
(获客分析)、
country
+
activeUsers
(地域分析)、
eventName
+
eventCount
/
conversions
(事件分析)。日期参数支持
NdaysAgo
today
yesterday
YYYY-MM-DD
格式。

Realtime

实时报告

bash
curl -sS -X POST -H "$AUTH" -H "Content-Type: application/json" \
  -d '{"dimensions":[{"name":"country"}],"metrics":[{"name":"activeUsers"}]}' \
  "https://analyticsdata.googleapis.com/v1beta/properties/$PID:runRealtimeReport" | jq '.rows'
bash
curl -sS -X POST -H "$AUTH" -H "Content-Type: application/json" \
  -d '{"dimensions":[{"name":"country"}],"metrics":[{"name":"activeUsers"}]}' \
  "https://analyticsdata.googleapis.com/v1beta/properties/$PID:runRealtimeReport" | jq '.rows'

Gotchas

注意事项

  • This is GA4 only (Data API v1). Old Universal Analytics (UA) is shut down — don't use the legacy
    analytics/v3
    endpoints.
  • Valid dimension/metric API names matter (
    screenPageViews
    , not "Pageviews"). If a name 400s, it's the wrong API id — check the GA4 dimensions & metrics list.
  • Reports are capped by
    limit
    (default 10k rows); page with
    offset
    .
  • 此方法仅适用于GA4(Data API v1)。旧版Universal Analytics(UA)已停用 — 请勿使用遗留的
    analytics/v3
    端点。
  • 维度/指标的API名称必须有效(例如
    screenPageViews
    ,而非“Pageviews”)。如果调用返回400错误,说明使用了错误的API标识 — 请查阅GA4维度与指标列表。
  • 报告结果受
    limit
    参数限制(默认10000行);可通过
    offset
    参数实现分页。