Выгрузка данных из Google Analytics
Если вам необходимо выгружать данные из Google Analytics, можно воспользоваться обычным HTTP протоколом. В отличие от родных библиотек, для выгрузки больших объемов данных, это может быть более производительным решением.
Авторизация
Прежде всего нужно создать приложение в API console. После этого создать новые oauth credentials типа Web application. В результате мы получим секретый ключ и идентификатор для авторизации:
Теперь необходимо авторизовать приложение с правами доступа к Google Analytics API. Для этого будем использовать обычный Curl и простую оболочку на PHP:
$google_client_id = 'xxx';
$google_secret = ‘yyy’;
$callback = ‘https://example.com/callback.php’;
# файл для хранения выданного токена
$token_file = ‘/var/cache/google.token.json’;
# проверяем, получен ли уже токен
$token = json_decode(file_get_contents($token_file), 1);
if ( !$token )
{
# просим посетить указанную ссылку, чтобы сгенерировать код доступа
$scope = ‘https://www.googleapis.com/auth/analytics’;
echo ‘Передийте по ссылке:’ . “n”;
echo “https://accounts.google.com/o/oauth2/auth?scope={$scope}&redirect_uri={$callback}&response_type=code&client_id={$google_client_id}&prompt=consent&access_type=offline”;
# После того, как код получен, просим ввести его:
echo ‘Введите полученный код:’ . “n”;
$code = readline();
# Получаем токен по выданному коду
$cmd = “curl -silent -d ‘client_id={$google_client_id}&client_secret={$google_secret}&code={$code}&grant_type=authorization_code&redirect_uri={$callback}’ https://accounts.google.com/o/oauth2/token&access_type=offline”;
$json = shell_exec($cmd);
# Сохраняем токен в файле
file_put_contents($token_file, $json);
$token = json_decode($json, 1);
}
# Проверяем токен
$check_url = “https://www.googleapis.com/oauth2/v1/tokeninfo?access_token={$token[‘access_token’]}”;
$c = curl_init($check_url);
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
$token_info = json_decode(curl_exec($c), 1);
# Если срок действия избежал, обновляем токен
if ( $token_info[‘expires_in’] <= 0 )
{
$cmd = “curl -d ‘client_id={$google_client_id}&client_secret={$google_secret}&refresh_token={$token[‘refresh_token’]}&grant_type=refresh_token’ https://accounts.google.com/o/oauth2/token&access_type=offline”;
$output = shell_exec($cmd);
$data = json_decode($output, 1);
# обновляем токен
if ( $data[‘access_token’] )
{
$data[‘refresh_token’] = $token[‘refresh_token’];
file_put_contents($token_file, json_encode($data));
$token = $data;
}
else
{
echo ‘error obtaining token’;
return;
}
}
## быстрый вариант авторизации с помощью curl
После выполнения этого кода в переменной $token будет лежать ключ доступа, который можно использовать в API.
Google Analytics API
Для выгрузки данных из Google Analytics нужно определить несколько параметров:
$profile = 12345; # ID профиля GA
$date_start = ‘2018-01-01’; # дата начала
$date_end = date(‘Y-m-d’); # и дата конца выборки
$metrics = ‘ga:sessions’; # метрика выборки
$items_per_page = 1000; # количество элементов в возвращаемом списке
…
## основные параметры запроса к GA API
Тепер выполним простую выгрузку сессий с начала года по дням:
$url = “https://www.googleapis.com/analytics/v3/data/ga?ids=ga:{$profile}&” .
“start-date={$date_start}&end-date={$date_end}&” .
“metrics={$metrics}&dimensions=ga:date” .
“&access_token={$token[‘access_token’]}” .
“&max-results={$items_per_page}”;
$c = curl_init($url);
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
$data = json_decode(curl_exec($c), 1);
$stats = $data[‘rows’];
print_r($stats);
## В массиве stats увидим данные по сессиям
Вид результата будет таким:
Array ( [0] => Array ( [0] => **20180101** [1] => **1913** ) [1] => Array ( [0] => **20180102** [1] => **3225** ) ...
Возможные метрики и измерения (metrics & dimensions) для выборки указаны тут. Метрики можно указывать через запятую:
$metrics = ‘ga:sessions,ga:pageviews’;
Выгрузка больших объемов
Если объем данных превышает максимальное количество записей (параметр $items_per_page), необходимо делать повторные запросы со смещением:
$date_start = ‘2010-01-01’;
$date_end = date(‘Y-m-d’);
$url = “https://www.googleapis.com/analytics/v3/data/ga?ids=ga:{$profile}&” .
“start-date={$date_start}&end-date={$date_end}&” .
“metrics={$metrics}&dimensions=ga:date” .
“&access_token={$token[‘access_token’]}” .
“&max-results={$items_per_page}”;
$stats = [];
do {
$c = curl_init($url);
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
$data = json_decode(curl_exec($c), 1);
curl_close($c);
# Заполняем массив с результатами (или сразу записываем в итоговый файл)
foreach ( $data[‘rows’] as $row ) $stats[] = $row;
# Проверяем существует ли следующая страница
$url = **$data[‘nextLink’]** . “&access_token={$token[‘access_token’]}”;
} while ( **$data[‘nextLink’]** );
# тут все данные уже выгружены
…
## Параметр nextLink будет содержать ссылку на следующую страницу результатов
Query explorer
Существует удобный инструмент для генерации запросов к GA API. Он поможет быстро составить необходимый запрос с любыми метриками, сегментами и фильтрами.
<h2>TL;DR
API Google Analytics можно использовать через обычный HTTP протокол. Для выгрузки больших объемов данных достаточно использовать постраничный вывод. Query explorer поможет сформировать выборки к API с использованием фильтров, сегментов и т.п.
Сообщить об опечатке
Текст, который будет отправлен нашим редакторам: