如何修改Google Analytics示例代码以获取关键词而非会话数?
获取Google Analytics关键词列表的API实现方法
嘿,刚上手Google Analytics API确实容易摸不着头绪,我来帮你把获取关键词列表的步骤理清楚!你之前能拿到会话数,说明API的基础调用已经通了,只需要调整**维度(Dimensions)和指标(Metrics)**的参数就行。
核心逻辑:用维度定位关键词
Google Analytics API的数据查询是「维度+指标」的组合模式,要拿到关键词,关键是要用到对应的维度:
- 维度:
ga:keyword—— 这个维度专门对应用户搜索时使用的关键词 - 搭配指标:推荐用
ga:sessions(和关键词绑定的会话数,能直观看到每个关键词的流量贡献)
调整你的API请求代码
假设你之前的会话数请求是类似这样的(以Python为例):
from googleapiclient.discovery import build # 初始化API客户端(这部分你应该已经配置好了) analytics = build('analyticsreporting', 'v4', credentials=credentials) # 原请求:仅获取会话数 response = analytics.reports().batchGet( body={ 'reportRequests': [ { 'viewId': 'YOUR_VIEW_ID', 'dateRanges': [{'startDate': '7daysAgo', 'endDate': 'today'}], 'metrics': [{'expression': 'ga:sessions'}] } ] } ).execute()
现在修改成包含关键词维度的请求,还可以加个过滤规则去掉无效的(not set)数据:
# 修改后的请求:获取关键词+对应会话数 response = analytics.reports().batchGet( body={ 'reportRequests': [ { 'viewId': 'YOUR_VIEW_ID', 'dateRanges': [{'startDate': '7daysAgo', 'endDate': 'today'}], 'metrics': [{'expression': 'ga:sessions'}], 'dimensions': [{'name': 'ga:keyword'}], # 可选:过滤掉直接流量的无关键词数据 'filtersExpression': 'ga:keyword!=(not set)' } ] } ).execute()
解析返回的关键词数据
请求成功后,你可以这样提取并打印关键词列表:
for report in response.get('reports', []): # 获取表头信息 dimension_headers = report.get('columnHeader', {}).get('dimensions', []) metric_headers = report.get('metricHeader', {}).get('metricHeaderEntries', []) # 遍历每一行数据 for row in report.get('data', {}).get('rows', []): keywords = row.get('dimensions', []) session_counts = row.get('metrics', [])[0].get('values', []) # 输出关键词和对应会话数 print(f"关键词: {keywords[0]}, 会话数: {session_counts[0]}")
几个注意点
- 确认视图有搜索数据:如果你的网站没有站内搜索功能,或者流量大多是直接访问,
ga:keyword字段可能会大量显示(not set) - 权限问题:确保你的API凭证拥有目标视图的读取权限
- 数据采样:如果流量很大,API可能返回采样数据,可尝试缩小日期范围或添加
'samplingLevel': 'LARGE'参数降低采样率
内容的提问来源于stack exchange,提问作者PHA
相关产品推荐
相关产品推荐

