我的代码如下:
DIMENSIONS = ['ga:pagePath']
def get_report(analytics,job_slug):
job_page_url = create_page_path_url(job_slug)
return analytics.reports().batchGet(
body={
'reportRequests': [
{
'viewId': VIEW_ID,
'dateRanges': [{'startDate': '7daysAgo', 'endDate': 'today'}],
'metrics': [{'expression':i} for i in METRICS],
'dimensions': [{'name':j} for j in DIMENSIONS],
'dimensionFilterClauses':[{"filters": [{'dimensionName': DIMENSIONS, 'operator': "IN_LIST", "expressions":[k for k in job_page_url]}]}]
}]
}
).execute()
错误说明如下:
HttpError:https://analyticsreporting.googleapis.com/v4/reports:batchGet?alt=json返回“接收到无效的JSON有效负载。在“report_requests[0]。dimension_filter_子句[0]。filters[0]”处的未知名称“dimensionName”:Proto字段未重复,无法启动列表。“。详细信息:“[{@type':'type.googleapis.com/google.rpc.BadRequest”,“fieldViolations':[{'field':'报告\u请求[0]。维度\u筛选\u子句[0]。筛选[0],'description':'接收到的JSON有效负载无效。在报告\u请求[0]处的未知名称“dimensionName”。维度\u筛选\u子句[0]。筛选[0]\':原型字段不重复,无法启动列表。}]}]"
我能够成功地从GA拉数据,如果'维数名称':维数替换为'维数名称':'ga: pagePath'。
我想知道这里发生了什么,因为两者是同一个意思,对吗?
才发现问题所在!维度名称不接受列表,因此必须作为单个字符串传入