如何使用Google Analytics API显示特定的页面视图?

2024-03-29 04:38:36 发布

您现在位置:Python中文网/ 问答频道 /正文

对于我正在使用的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']}], 'minimums': [{'values': ['29', '51.21186440677966']}], 'rowCount': 3, 'rows': [{'dimensions': ['desktop'], 'metrics': [{'values': ['485', '51.21186440677966']}]}, {'dimensions': ['mobile'], 'metrics': [{'values': ['409', '69.30859375']}]}, {'dimensions': ['tablet'], 'metrics': [{'values': ['29', '94.95454545454545']}]}], 'totals': [{'values': ['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)

Tags: nameindfforgetvalueresponsemetric