Android, Google Analytics, App Engine — продукты одной компании. Казалось бы — что может быть проще, чем показать данные из одного продукта в другом? Например, статистику Google Analytics из Android-приложения на сайте App Engine? Оказалось, что сделать это действительно несложно. Только не все шаги очевидны.
В данной статье я постараюсь по шагам рассказать о том, как достичь желаемого. Часть, касающаяся передачи данных из приложения Android в Google Analytics сознательно пропущена, т.к. не содержит каких-либо сложностей.
Шаг 1. Доступ
- Для того, чтобы ваше GAE-приложение (сайт) смогло использовать данные из Google Analytics, необходимо в Google Developers Console в разделе APIs для вашего проекта включить Analytics API. Если необходимо, то тут же можно установить свои лимиты (квоты) на использование Analytics API.
- В самом Google Analytics, в разделе Управление пользователями необходимо дать права на Чтение и анализ сервисному пользователю — your-app-id@appspot.gserviceaccount.com. Именно под этим пользователем мы будем запрашивать информацию из Google Analytics. К счастью, данные из Google Analytics (в отличие от некоторых других сервисов Google, например, Google Play Services) можно получать под сервисным пользователем. Использование обычного (несервисного) пользователя потребовало бы дополнительных шагов для oauth-авторизации.
- Для того, чтобы иметь возможность тестировать ваш код локально, без загрузки на сервера Google, необходимо создать еще одного сервисного пользователя. Подробная инструкция по его созданию и использованию приведена в ответе на StackOverflow. your-app-id@appspot.gserviceaccount.com работает лишь в боевой среде.
Шаг 2. Библиотеки и инструменты
- Чтобы упростить доступ к Analytics API, скачиваем Google API Python Client for GAE (если используете Python). Конечно же, нужна именно версия для GAE. Документация по данной библиотеке находится тут.
- Для тестирования запросов к Google Analytics можно использовать Google Analytics Query Explorer 2.
Шаг 3. Получение данных
Теперь получить данные из Google Analytics совсем просто —
from oauth2client.appengine import AppAssertionCredentials
from apiclient.discovery import build
from google.appengine.api import memcache
import httplib2
credentials = AppAssertionCredentials(scope='https://www.googleapis.com/auth/analytics.readonly')
http = credentials.authorize(httplib2.Http(memcache))
service = build('analytics', 'v3', http=http)
active_users = None
response = service.data().ga().get(
ids='ga:'+profile_id, # можно получать динамически или прописать в коде
start_date='2014-03-03',
end_date='2014-03-09',
metrics='ga:visitors').execute()
if response.get('rows'):
active_users = int(response.get('rows')[0][0])
Данный код позволяет узнать количество активных пользователей в приложении за заданный период времени.
В моем случае я запрашиваю необходимые данные из Google Analytics раз в неделю, по вторникам (именно по вторникам, т.к. один дополнительный день отводится на передачу данных от пользователей Android-приложения на сервера Google Analytics). Данные сохраняются в NDB, а на сайте отображаются с помощью Google Charts.
Автор: and7ey