Сегодня я хотел бы поделиться знаниями по извлечении данных из Google Analytics, используя их API v3 на стороне сервера (server-side), т.е. без участия браузера пользователя.
Самое странное, что в Сети в основном описаны все примеры с использованием эмуляции браузера и аккаунта пользователя (пара email+пароль). Мы так делать не будем, т.к. это глупо и не красиво
Приступим.
Прежде всего идём к Консоль Google и там в левом выпадающем меню создаём новый проект (если у вас его ещё нет).
После создания проекта мы получаем страницу All Services
, где передвигаем ползунок из положения Off
в положение On
для Analytics API.
Сразу обращаю ваше внимание на то, что Google даёт нам только 50000 запросов в день к этому API. А это значит, если у вас будет обращений больше этого числа, то обязательно стоит подумать о кэшировании результатов.
Теперь переходи на вкладку API Access
и нажимаем там на большую синюю кнопку Create an OAuth 2.0 client ID….
Заполняем и нажимаем кнопку Next
В следующем окне выбираем тип приложения (Application type) — Service account. Он не имеет опций настройки. И нажимаем Create Client ID.
Теперь нам предлагают скачать приватный ключ. Скачиваем и сохраняем его директорию проекта, но так, чтобы права за чтение были только у скрипта.
Пароль по-умолчанию на приватный ключ — notasecret
Теперь скачиваем Google API PHP Client.
Извлекаем и забираем только папку src, всё остальное опционально.
Далее берём мой код и подставляем в него свои значения для констант CLIENT_ID
и SERVICE_EMAIL
из Консоли Google на странице API Access в блоке Service account.
Значением KEY_FILE_PATH
будет путь к файлу приватного ключа.
setApplicationName( 'Analytics' );
$client->setClientId( CLIENT_ID );
$client->setAccessType( 'offline_access');
$client->setAssertionCredentials(
new Google_AssertionCredentials(
SERVICE_EMAIL,
array( ANALYTICS_SCOPE ),
file_get_contents( KEY_FILE_PATH )
)
);
$client->setUseObjects( true );
// if associative arrays should be returned (default behavior).
// if objects should be returned by the service classes.
///////////////////////////////////////////////////////////////////////////////
// create service
$service = new Google_AnalyticsService( $client );
///////////////////////////////////////////////////////////////////////////////
// get data
$results = $service->data_ga->get(
'ga:XXXXXXX',
'2013-01-01',
'2013-01-22',
'ga:visits',
array(
'dimensions' => 'ga:source,ga:date',
'sort' => 'ga:date,-ga:visits',
'filters' => 'ga:visits>100',
'max-results' => '100'
)
);
// you can use Google Analytics Query Explorer 2: https://ga-dev-tools.appspot.com/explorer/
///////////////////////////////////////////////////////////////////////////////
// $results
///////////////////////////////////////////////////////////////////////////////
И ещё одно, без которого ничего работать не будет
Идём в Google Analytics, переходим в Администратор → Управление аккаунтами и добавляем пользователя с электронным адресом, что в SERVICE_EMAIL
(с правами пользователя).
Для построения запросов я рекомендую использовать Google Analytics Query Explorer 2.