Как показать просмотры определенных страниц с помощью 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']}], '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)

API возвращает данные в формате Json, если вы хотите сохранить его как CSV, вам придется проанализировать его.

DaImTo 02.04.2021 00:11

Отвечает ли это на ваш вопрос? Python конвертирует JSON в CSV

DaImTo 02.04.2021 00:12
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
2
19
0

Другие вопросы по теме

Похожие вопросы

Как я могу публиковать несколько случайных сообщений для каждого клиента mqtt случайным образом, а не последовательно одному и тому же брокеру с использованием клиента python?
Как отфильтровать строки фрейма данных на основе наличия значений столбцов в отдельном фрейме данных и добавить столбцы из второго фрейма данных
Не удается открыть файл spss (.sav) с помощью Python в модуле pandas
Цикл while, который ДОЛЖЕН возвращать новое случайное целое число после каждого запуска
Почему мой цикл while не входит в оператор if?
Поиск самого длинного значения из его ключа в словаре
ValueError: недостаточно значений для распаковки (ожидалось 3, получено 2) - как решить?
Как определить, когда в приложении открывается запрос на сохранение, а затем сохранить его по указанному пути к файлу?
Как питонист может упростить этот цикл for?
Leetcode: 14. Самый длинный общий префикс