Рубріки: HighloadТеория

Выгрузка данных из 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 с использованием фильтров, сегментов и т.п.

Останні статті

Лучшие криптобиржи для криптозаймов в 2025 году: где лучше брать кредит под крипту?

На фоне роста спроса на ликвидность в бычьем рынке 2025 года, криптозаймы снова выходят на…

09.07.2025

Что такое прокси-сервер: пояснение простыми словами, зачем нужны прокси

Прокси (proxy), или прокси-сервер — это программа-посредник, которая обеспечивает соединение между пользователем и интернет-ресурсом. Принцип…

21.11.2024

Что такое PWA приложение? Зачем необходимо прогрессивное веб-приложение

Согласитесь, было бы неплохо соединить в одно сайт и приложение для смартфона. Если вы еще…

19.11.2024

Как создать игру на телефоне: программирование с помощью конструктора

Повсеместное распространение смартфонов привело к огромному спросу на мобильные игры и приложения. Миллиарды пользователей гаджетов…

17.11.2024

Google Bard: эффективный аналог ChatGPT

В перечне популярных чат-ботов с искусственным интеллектом Google Bard (Gemini) еще не пользуется такой популярностью…

14.11.2024

Скрипт и программирование: что это такое простыми словами

Скрипт (англ. — сценарий), — это небольшая программа, как правило, для веб-интерфейса, выполняющая определенную задачу.…

12.11.2024