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

В этом руководстве описывается, как получить доступ к аккаунту Google Analytics, отправлять запросы в API этого сервиса, обрабатывать ответы и извлекать результаты обработки с применением Core Reporting API 3.0, Management API 3.0 и OAuth 2.0.

Шаг 1. Включите Google Analytics API

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

Создайте идентификатор клиента

Откройте раздел "Учетные данные" и выполните следующие действия:

  1. Нажмите Создать учетные данные и выберите Идентификатор клиента OAuth.
  2. В разделе Тип приложения выберите Другие типы.
  3. Введите название.
  4. Нажмите кнопку Создать.

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

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

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

pip

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

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

Setuptools

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

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

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

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

sudo python setup.py install

Возможно, вам придется вызвать команду с помощью прав администратора (sudo), чтобы установить Python в систему.

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

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

  1. Скопируйте или скачайте приведенный ниже исходный код для HelloAnalytics.py.
  2. Переместите ранее загруженный файл client_secrets.json в тот каталог, где находится код примера.
"""Простой пример получения доступа к Google Analytics API"""

import argparse

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


def get_service(api_name, api_version, scope, client_secrets_path):
  """Получение службы, связывающейся с Google API.

  Аргументы:
    api_name: имя API (строка);
    api_version: версия API (строка);
    scope: области действия метода AUTH для авторизации соединения (список строк);
    client_secrets_path: путь к действительному файлу секретного кода клиента (строка).

  Возвращает
    службу, которая подключается к указанному API.
  """
  # Анализ аргументов командной строки.
  parser = argparse.ArgumentParser(
      formatter_class=argparse.RawDescriptionHelpFormatter,
      parents=[tools.argparser])
  flags = parser.parse_args([])

  # Настройка объекта Flow, который будет использоваться при необходимости аутентификации.
  flow = client.flow_from_clientsecrets(
      client_secrets_path, scope=scope,
      message=tools.message_if_missing(client_secrets_path))

  # Подготовьте учетные данные и авторизуйте с их помощью объекта HTTP.
  # Если учетные данные недействительны или не существуют, воспользуйтесь оригинальной
  # процедурой клиента. Применение объекта Storage гарантирует, что в случае успеха правильные
  # учетные данные будут записаны обратно в файл.
  storage = file.Storage(api_name + '.dat')
  credentials = storage.get()
  if credentials is None or credentials.invalid:
    credentials = tools.run_flow(flow, storage, flags)
  http = credentials.authorize(http=httplib2.Http())

  # Создание объекта службы.
  service = build(api_name, api_version, http=http)

  return service


def get_first_profile_id(service):
  # Используйте объект службы Analytics, чтобы получить первый идентификатор профиля.

  # Получение списка всех аккаунтов Google Analytics авторизованного пользователя.
  accounts = service.management().accounts().list().execute()

  if accounts.get('items'):
    # Получение первого аккаунта Google Analytics.
    account = accounts.get('items')[0].get('id')

    # Получение списка всех ресурсов первого аккаунта.
    properties = service.management().webproperties().list(
        accountId=account).execute()

    if properties.get('items'):
      # Получение идентификатора первого ресурса.
      property = properties.get('items')[0].get('id')

      # Получение списка всех представлений (профилей) первого ресурса.
      profiles = service.management().profiles().list(
          accountId=account,
          webPropertyId=property).execute()

      if profiles.get('items'):
        # Возвращает идентификатор первого представления (профиля).
        return profiles.get('items')[0].get('id')

  return None


def get_results(service, profile_id):
  # Используйте объект службы Analytics для запроса к Core Reporting API
  # о количестве сессий за последние семь дней.
  return service.data().ga().get(
      ids='ga:' + profile_id,
      start_date='7daysAgo',
      end_date='today',
      metrics='ga:sessions').execute()


def print_results(results):
  # Вывод данных в удобном для пользователя формате.
  if results:
    print 'View (Profile): %s' % results.get('profileInfo').get('profileName')
    print 'Total Sessions: %s' % results.get('rows')[0][0]

  else:
    print 'No results found'


def main():
  # Определение области доступа для запроса.
  scope = ['https://www.googleapis.com/auth/analytics.readonly']

  # Аутентификация и создание службы.
  service = get_service('analytics', 'v3', scope, 'client_secrets.json')
  profile = get_first_profile_id(service)
  print_results(get_results(service, profile))


if __name__ == '__main__':
  main()

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

После того как вы включили Google Analytics API, установили клиентскую библиотеку Google API для Python и настроили код примера, он готов к запуску.

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

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

После выполнения всех шагов будет выведено название первого профиля авторизованного пользователя в Google Analytics и количество сеансов за последние семь дней.

Имея авторизованный служебный объект Analytics, вы можете запустить любой из примеров кода, приведенных в справочных материалах по Management API. Например, можно попробовать изменить код, чтобы использовать метод accountSummaries.list.

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

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

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

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

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

  2. Добавьте приведенную ниже строку в файл ~/.bashrc, заменив <pip_install_path> значением, определенным на предыдущем этапе:

    export PYTHONPATH=$PYTHONPATH:<pip_install_path>
    
  3. Перезагрузите файл ~/.bashrc в окне терминала с помощью следующей команды:

    source ~/.bashrc