Введение в 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 в директорию, содержащую код образца.
"""A simple example of how to access the 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):
  """Get a service that communicates to a Google API.

  Args:
    api_name: string The name of the api to connect to.
    api_version: string The api version to connect to.
    scope: A list of strings representing the auth scopes to authorize for the
      connection.
    client_secrets_path: string A path to a valid client secrets file.

  Returns:
    A service that is connected to the specified API.
  """
  # 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=scope,
      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(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())

  # Build the service object.
  service = build(api_name, api_version, http=http)

  return service

def get_first_profile_id(service):
  # Use the Analytics service object to get the first profile id.

  # Get a list of all Google Analytics accounts for the authorized user.
  accounts = service.management().accounts().list().execute()

  if accounts.get('items'):
    # Get the first Google Analytics account.
    account = accounts.get('items')[0].get('id')

    # Get a list of all the properties for the first account.
    properties = service.management().webproperties().list(
        accountId=account).execute()

    if properties.get('items'):
      # Get the first property id.
      property = properties.get('items')[0].get('id')

      # Get a list of all views (profiles) for the first property.
      profiles = service.management().profiles().list(
          accountId=account,
          webPropertyId=property).execute()

      if profiles.get('items'):
        # return the first view (profile) id.
        return profiles.get('items')[0].get('id')

  return None

def get_results(service, profile_id):
  # Use the Analytics Service Object to query the Core Reporting API
  # for the number of sessions in the past seven days.
  return service.data().ga().get(
      ids='ga:' + profile_id,
      start_date='7daysAgo',
      end_date='today',
      metrics='ga:sessions').execute()

def print_results(results):
  # Print data nicely for the user.
  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():
  # Define the auth scopes to request.
  scope = ['https://www.googleapis.com/auth/analytics.readonly']

  # Authenticate and construct service.
  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