Введение в 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. Откройте страницу сервисных аккаунтов. При необходимости выберите проект.
  2. Нажмите Создать сервисный аккаунт.
  3. Укажите название аккаунта и выберите Создать новый закрытый ключ. Если вы хотите предоставить G Suite права в рамках домена для сервисного аккаунта, выберите вариант Включить делегирование доступа к данным в домене G Suite. Затем нажмите Создать.

Будет создана единственная пара ключей (открытый и закрытый), которая затем будет загружена на ваш компьютер. Вы должны самостоятельно обеспечивать ее сохранность.

Добавьте сервисный аккаунт в аккаунт Google Analytics

Новый сервисный аккаунт будет связан с адресом электронной почты &ltprojectId&gt-&ltuniqueId&gt@developer.gserviceaccount.com. Используйте этот адрес, чтобы добавить пользователя в аккаунт Google Analytics, к которому вам нужен доступ через API. Для этого руководства требуется разрешение на чтение и анализ.

Шаг 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.p12 в директорию, содержащую код образца.
  3. Замените значения SERVICE_ACCOUNT_EMAIL и KEY_FILE_LOCATION подходящими значениями из Developer Console.
"""A simple example of how to access the Google Analytics API."""

import argparse

from apiclient.discovery import build
from oauth2client.service_account import ServiceAccountCredentials

import httplib2
from oauth2client import client
from oauth2client import file
from oauth2client import tools

def get_service(api_name, api_version, scope, key_file_location,
                service_account_email):
  """Get a service that communicates to a Google API.

  Args:
    api_name: The name of the api to connect to.
    api_version: The api version to connect to.
    scope: A list auth scopes to authorize for the application.
    key_file_location: The path to a valid service account p12 key file.
    service_account_email: The service account email address.

  Returns:
    A service that is connected to the specified API.
  """

  credentials = ServiceAccountCredentials.from_p12_keyfile(
    service_account_email, key_file_location, scopes=scope)

  http = credentials.authorize(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 this 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 within 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']

  # Use the developer console and replace the values with your
  # service account email and relative location of your key file.
  service_account_email = '<Replace with your service account email address.>'
  key_file_location = '<Replace with /path/to/generated/client_secrets.p12>'

  # Authenticate and construct service.
  service = get_service('analytics', 'v3', scope, key_file_location,
    service_account_email)
  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

После выполнения всех шагов будет выведено название первого профиля авторизованного пользователя в 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