Введение в Google Analytics Reporting API версии 4: краткое руководство по Python для установленных приложений

Из этой статьи вы узнаете, как выполнить авторизацию в Analytics Reporting API версии 4.

1. Включите API

Перед началом работы с Analytics Reporting API версии 4 используйте инструмент настройки, чтобы создать проект в Google API Console, включить API и зарегистрировать учетные данные.

Примечание. Чтобы создать идентификатор веб-клиента или клиента установленного приложения, нужно указать название продукта на экране подтверждения. Если вы ещё не указали название, вам будет предложено сделать это в настройках.

Создание учетных данных

  • Откройте страницу Учетные данные.
  • Нажмите Создать учетные данные и выберите Идентификатор клиента OAuth.
  • В разделе Тип приложения выберите пункт Другие типы.
  • Введите название quickstart и нажмите Создать.

На странице Учетные данные выберите созданный идентификатор клиента, нажмите кнопку Скачать файл JSON и сохраните файл как client_secrets.json. Он потребуется вам позже.

2. Установите клиентскую библиотеку

Вы можете воспользоваться менеджером пакетов или скачать и установить клиентскую библиотеку для Python вручную:

pip

Примените pip, специальный инструмент для установки пакетов Python:

sudo pip install --upgrade google-api-python-client

Setuptools

Можно также использовать инструмент easy_install, входящий в пакет setuptools:

sudo easy_install --upgrade google-api-python-client

Установка вручную

Загрузите последнюю версию клиентской библиотеки Google API, распакуйте код и выполните его:

sudo python setup.py install

3. Настройте пример

Теперь нужно создать файл HelloAnalytics.py с кодом этого примера.

  1. Скопируйте или скачайте приведенный ниже код для HelloAnalytics.py.
  2. Переместите загруженный файл client_secrets.json в каталог с исходным кодом.
  3. Измените значение VIEW_ID. Чтобы найти этот параметр, воспользуйтесь инструментом Account Explorer.
"""Hello Analytics Reporting API V4."""

import argparse

from apiclient.discovery import build
import httplib2
from oauth2client import client
from oauth2client import file
from oauth2client import tools

SCOPES = ['https://www.googleapis.com/auth/analytics.readonly']
DISCOVERY_URI = ('https://analyticsreporting.googleapis.com/$discovery/rest')
CLIENT_SECRETS_PATH = 'client_secrets.json' # Path to client_secrets.json file.
VIEW_ID = '<REPLACE_WITH_VIEW_ID>'

def initialize_analyticsreporting():
  """Initializes the analyticsreporting service object.

  Returns:
    analytics an authorized analyticsreporting service object.
  """
  # Parse command-line arguments.
  parser = argparse.ArgumentParser(
      formatter_class=argparse.RawDescriptionHelpFormatter,
      parents=[tools.argparser])
  flags = parser.parse_args([])

  # Set up a Flow object to be used if we need to authenticate.
  flow = client.flow_from_clientsecrets(
      CLIENT_SECRETS_PATH, scope=SCOPES,
      message=tools.message_if_missing(CLIENT_SECRETS_PATH))

  # Prepare credentials, and authorize HTTP object with them.
  # If the credentials don't exist or are invalid run through the native client
  # flow. The Storage object will ensure that if successful the good
  # credentials will get written back to a file.
  storage = file.Storage('analyticsreporting.dat')
  credentials = storage.get()
  if credentials is None or credentials.invalid:
    credentials = tools.run_flow(flow, storage, flags)
  http = credentials.authorize(http=httplib2.Http())

  # Build the service object.
  analytics = build('analytics', 'v4', http=http, discoveryServiceUrl=DISCOVERY_URI)

  return analytics

def get_report(analytics):
  # Use the Analytics Service Object to query the Analytics Reporting API V4.
  return analytics.reports().batchGet(
      body={
        'reportRequests': [
        {
          'viewId': VIEW_ID,
          'dateRanges': [{'startDate': '7daysAgo', 'endDate': 'today'}],
          'metrics': [{'expression': 'ga:sessions'}]
        }]
      }
  ).execute()

def print_response(response):
  """Parses and prints the Analytics Reporting API V4 response"""

  for report in response.get('reports', []):
    columnHeader = report.get('columnHeader', {})
    dimensionHeaders = columnHeader.get('dimensions', [])
    metricHeaders = columnHeader.get('metricHeader', {}).get('metricHeaderEntries', [])
    rows = report.get('data', {}).get('rows', [])

    for row in rows:
      dimensions = row.get('dimensions', [])
      dateRangeValues = row.get('metrics', [])

      for header, dimension in zip(dimensionHeaders, dimensions):
        print header + ': ' + dimension

      for i, values in enumerate(dateRangeValues):
        print 'Date range (' + str(i) + ')'
        for metricHeader, value in zip(metricHeaders, values.get('values')):
          print metricHeader.get('name') + ': ' + value

def main():

  analytics = initialize_analyticsreporting()
  response = get_report(analytics)
  print_response(response)

if __name__ == '__main__':
  main()

4. Запустите пример

Запустите пример, используя следующий код:

python HelloAnalytics.py
  • Приложение загрузит страницу авторизации в браузере.
  • Если вы ещё не вошли в аккаунт Google, вам будет предложено это сделать. Если вы вошли в несколько аккаунтов Google, вы должны будете выбрать для авторизации один из них.

После того как вы выполните все шаги, на экране появится количество сеансов в выбранном представлении за последние семь дней.

Устранение неполадок

AttributeError: 'Module_six_moves_urllib_parse' object has no attribute 'urlparse'

Эта ошибка может возникнуть в Mac OS X, когда установка по умолчанию модуля six (зависимого компонента этой библиотеки) завершается до того, как установлен инструмент pip. Чтобы устранить проблему, добавьте место установки инструмента pip в системную переменную среды PYTHONPATH:

  • Определите место установки инструмента pip с помощью следующей команды:

    pip show six | grep "Location:" | cut -d " " -f2

  • Замените строку &lt;pip_install_path&gt; в файле ~/.bashrc значением, указанным выше:

    export PYTHONPATH=$PYTHONPATH:<pip_install_path>

  • Перезагрузите файл ~/.bashrc в окне терминала с помощью следующей команды:

    source ~/.bashrc