python - 如何使用 Google Analytics API 显示特定的页面浏览量?
问题描述
对于我正在使用的 API,我们需要能够查看正在单击的特定页面并输出到 CSV 文件。我能够看到平均会话持续时间和页面浏览量。我很好奇我需要在下面附加的代码中添加什么,以确保可以导出到 CSV 文件。谢谢!
from googleapiclient.discovery import build
from oauth2client.service_account import ServiceAccountCredentials
SCOPES = ['https://www.googleapis.com/auth/analytics.readonly']
KEY_FILE_LOCATION = 'client_secrets.json'
VIEW_ID ='insert here'
credentials = ServiceAccountCredentials.from_json_keyfile_name(KEY_FILE_LOCATION, SCOPES)
# Build the service object.
analytics = build('analyticsreporting', 'v4', credentials=credentials)
response = analytics.reports().batchGet(body={
'reportRequests': [{
'viewId': VIEW_ID,
'dateRanges': [{'startDate': '30daysAgo', 'endDate': 'today'}],
'metrics': [
{"expression": "ga:pageviews"},
{"expression": "ga:avgSessionDuration"}
], "dimensions": [
{"name": "ga:deviceCategory"}
]
}]}).execute()
回复
{'reports': [{'columnHeader': {'dimensions': ['ga:deviceCategory'], 'metricHeader': {'metricHeaderEntries': [{'name': 'ga:pageviews', 'type': ' INTEGER'}, {'name': 'ga:avgSessionDuration', 'type': 'TIME'}]}}, 'data': {'isDataGolden': True, 'maximums': [{'values': [' 485', '94.95454545454545']}], '最小值': [{'values': ['29', '51.21186440677966']}], 'rowCount': 3, 'rows': [{'dimensions': ['桌面'],'指标':[{'值':['485','51.21186440677966']}]},{'尺寸':['移动'],'指标':[{'值':[' 409', '69.30859375']}]}, {'尺寸':['平板电脑'],'指标':[{'值':['29','94.95454545454545']}]}],'总计':[{'值':['923','60.06487341772152'] }]}}]}
import pandas as pd
df = pd.DataFrame(columns=['Name', 'Age'])
def ga_response_dataframe(response):
row_list = []
# Get each collected report
for report in response.get('reports', []):
# Set column headers
column_header = report.get('columnHeader', {})
dimension_headers = column_header.get('dimensions', [])
metric_headers = column_header.get('metricHeader', {}).get('metricHeaderEntries', [])
# Get each row in the report
for row in report.get('data', {}).get('rows', []):
# create dict for each row
row_dict = {}
dimensions = row.get('dimensions', [])
date_range_values = row.get('metrics', [])
# Fill dict with dimension header (key) and dimension value (value)
for header, dimension in zip(dimension_headers, dimensions):
row_dict[header] = dimension
# Fill dict with metric header (key) and metric value (value)
for i, values in enumerate(date_range_values):
for metric, value in zip(metric_headers, values.get('values')):
# Set int as int, float a float
if ',' in value or '.' in value:
row_dict[metric.get('name')] = float(value)
else:
row_dict[metric.get('name')] = int(value)
row_list.append(row_dict)
df = row_list
return df
df = ga_response_dataframe(response)
#df = pd.DataFrame(row_list)
print(df)
解决方案
推荐阅读
- tensorflow - 如何使用 VGG16 输出 6 个具有 (None,None,3) 图像大小的类
- pgadmin - 如何在 pgadmin4 中设置一个固定的 por,因为他打开了 rand
- ios - 将反应原生应用程序转换为原生 iOS 的最佳方法是什么?
- c# - 获取 System.Web.HttpPostedFileBase 的内容并写入磁盘
- c# - Azure ServiceBus 消息序列化/反序列化
- matlab - 在matlab中处理光谱数据
- docker - 使用 nsenter 访问没有附加运行容器的 docker 网络
- ruby-on-rails - 使用带有 rails turbolinks 的插件
- c++ - qt收不到信号
- architecture - 如何恢复遗留系统的架构(PHP)