通过Python调用Google Analytics API 4获取获客渠道新用户数据
解决Google Analytics API拉取指定渠道新用户数据的问题
首先,你遇到的Selected dimensions and metrics cannot be queried together报错,本质是两个核心问题导致的:
- 错误使用了
ga:cohort维度:这个维度是专为同期群分析设计的,和你要获取的常规渠道流量指标不兼容; - 指标表达式写法错误:
ga:acquisitionTrafficChannel/ga:newUsers不是合法的GA指标语法,你需要直接用ga:newUsers来获取新用户数。
针对你要获取的两类获客渠道数据,我整理了精准匹配GA界面的请求配置:
1. 获取「推荐 > 指定推荐站点」的新用户数
要对应GA界面「获取 > 所有流量 > 渠道 > 推荐 > 指定站点」的数据,你需要:
- 维度:
ga:channelGrouping(定位到「推荐」渠道) +ga:source(指定具体推荐站点) - 指标:
ga:newUsers - 过滤条件:限制渠道分组为
Referral
示例代码
from datetime import datetime, timedelta # 日期范围(和你之前的30天逻辑保持一致) start_date = datetime.strftime(datetime.now() - timedelta(days=30), '%Y-%m-%d') end_date = datetime.strftime(datetime.now(), '%Y-%m-%d') # 推荐站点请求配置 referral_request = { 'viewId': 'XXXXXXX', 'dimensions': [ {"name": "ga:channelGrouping"}, {"name": "ga:source"} ], 'metrics': [{'expression': 'ga:newUsers'}], 'dateRanges': [{'startDate': start_date, 'endDate': end_date}], 'filtersExpression': 'ga:channelGrouping==Referral' }
如果只需要某一个特定推荐站点(比如example.com),可以把过滤条件改成:'filtersExpression': 'ga:channelGrouping==Referral;ga:source==example.com'
2. 获取「社交 > Facebook」的新用户数
对应GA界面「获取 > 所有流量 > 渠道 > 社交 > Facebook」的数据,配置如下:
- 维度:
ga:channelGrouping(定位到「社交」渠道) +ga:source(指定Facebook) - 指标:
ga:newUsers - 过滤条件:限制渠道分组为
Social且来源包含facebook(兼容大小写或变体,比如m.facebook.com)
示例代码
# Facebook社交渠道请求配置 facebook_request = { 'viewId': 'XXXXXXX', 'dimensions': [ {"name": "ga:channelGrouping"}, {"name": "ga:source"} ], 'metrics': [{'expression': 'ga:newUsers'}], 'dateRanges': [{'startDate': start_date, 'endDate': end_date}], 'filtersExpression': 'ga:channelGrouping==Social;ga:source=@facebook' }
批量请求(一次获取两类数据)
你可以把两个请求放到reportRequests数组中,一次性批量获取:
batch_request = { 'reportRequests': [referral_request, facebook_request] } # 调用API执行请求(需确保已完成GA API授权) # response = analytics.reports().batchGet(body=batch_request).execute()
关键注意事项
- 确认你的GA视图ID(
viewId)正确,且API权限已配置完成; - 日期范围要和GA界面完全一致,才能保证数据精准匹配;
- 如果你的GA账户自定义了渠道分组,需要把
ga:channelGrouping的过滤值改成自定义渠道名称(比如不是默认的Referral/Social); - 返回的
ga:newUsers值就是整数,直接提取即可,和GA界面显示的数值完全同步。
内容的提问来源于stack exchange,提问作者John
相关产品推荐
相关产品推荐

