Введение в 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.json в тот каталог, где находится код примера.
  3. Замените значения key_file_location значениями из Developer Console.
"""A simple example of how to access the Google Analytics API."""

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

def get_service(api_name, api_version, scopes, key_file_location):
    """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.
        scopes: A list auth scopes to authorize for the application.
        key_file_location: The path to a valid service account JSON key file.

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

    credentials = ServiceAccountCredentials.from_json_keyfile_name(
            key_file_location, scopes=scopes)

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

    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):', results.get('profileInfo').get('profileName')
        print 'Total Sessions:', 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'
    key_file_location = '<REPLACE_WITH_JSON_FILE>'

    # Authenticate and construct service.
    service = get_service(
            api_name='analytics',
            api_version='v3',
            scopes=[scope],
            key_file_location=key_file_location)

    profile_id = get_first_profile_id(service)
    print_results(get_results(service, profile_id))

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