Свой интерфейс для Google Analytics с помощью Google Analytics API

18.10.2009 04:05

    Все, кто вариться в Интернет в виде создателя или админа сайтов знает, что Google Analytics это круто. Но одно дело, если вы фрилансер, и клиенту можно показывать статистику сайта прямо в Google Analytics, и совершенно другое, если Вы компания. Компании показывать статистику на Google Analytics как минимум не солидно, да и попробуйте объяснить клиенту зачем ему аккаунт на гугле. :)

    Выходом для компаний всегда были какие-то сторонние решения (на подобии CNStats). Минусом таких систем является недостаточная развернутость данных, платность (хоть и не всегда), несовершенство кода, необходимость тратить свои серверные мощности.

    С недавнего времени есть другой выход. Не так давно компания Google запустила открытый API для получения данных Google Analytics сторонними разработчиками.


Работа с Google Analytics API предельно проста. Для того, что-бы вы могли использовать его в своем приложении Вам будут необходимы следующие вещи:

  • Клас для работы с Google Analytics
  • Логин и пароль для доступа к тому аккаунту, через который Вы будете получать данные. Рекомендую для каждого клиента создавать отдельный гугл-аккаунт с доступом только на чтение.
  • ID аккаунта. Обращаю внимание, что это не ID счетчика, который мы привыкли видеть (вида UA-00000000-0), а именно ID профиля. Найти его можно на странице настройки профиля:

    ID профиля Google Analytics
  • Немного смекалки ;)

В качестве примера Гугл дает вот такой код:

1
2
3
4
5
6
7
8
9
10
$ga = new gapi('email@yourdomain.com','password');
 
$ga->requestReportData(145141242,array('browser','browserVersion'),array('pageviews','visits'));
 
foreach($ga->getResults() as $result)
{
  echo '<strong>'.$result.'</strong><br />';
  echo 'Pageviews: ' . $result->getPageviews() . ' ';
  echo 'Visits: ' . $result->getVisits() . '<br />';
}

Объясню подробнее по частям.

1
$ga = new gapi('email@yourdomain.com','password');

Авторизирует Ваш скрипт на Google Analytics API. Вместо «email@yourdomain.com» и «password» – логин и пароль на аккаунт, у которого есть доступ к аккаунтам Google Analytics.

3
$ga->requestReportData(145141242,array('browser','browserVersion'),array('pageviews','visits'));

Передает запрос на Google Analytics API, получая данные. В данном случае скрипт запрашивает просмотры страниц и посещения по браузерам и их версиям.

Стоит заметить, что для того, что-бы ваши скрипты смогли «общаться» с Google Analytics API, на сервере должна быть включена библиотека open_ssl и либо curl либо опция allow_url_fopen.

Строки с 5 по 10 занимаются, собственно, выборкой данных: 8я – просмотры страниц, 9я – посещения. В переменной $result будут лежать получаемые параметры (в данном случае название и версия браузера).

Я немного доделал процедуру получения данных и у меня получило вот так:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function get_ga_data($dimantion,$metrics,$sort=null, $filter=null, $start_date=null, $end_date=null, $start_index=1, $max_results=100) {
$ga = new gapi('google_login','google_password');
$ga->requestReportData('google_profile_id',$dimantion,$metrics,$sort,$filter,$start_date,$end_date,$start_index,$max_results);
$data = array();
foreach($ga->getResults() as $result)
	{
	$a = ''.iconv('UTF-8','WINDOWS-1251',urldecode($result)).'';
	$data[$a] = array();
	foreach ($metrics as $m)
		{
		eval('$data["'.$a.'"]["'.$m.'"] = $result->get'.$m.'();');
		}
	}
return $data;
}

По сути эта функция с такими же параметрами, как и функция класса возвращает уже непосредственно массив с данными, где ключами будут запрошенные метрики. Также сразу производятся необходимые операции по переводу данных их UTF-8 и декодирование строк через urldecode.
Кстати, что касается дименшенов и метрик, а также о несовместимости некоторых из них, можно почитать вот тут.

Еще хочу обратить внимание на что, что например, страны, гугл отдает на английском – тут еще можно завязать Google Translate API.

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

Для получения количества посещений, новых посетителей и количества посетителей:

1
$data = get_ga_data(array('date'),array('visits','newVisits','visitors'),array('date'));

Для получения стран:

1
$data = get_ga_data(array('country'),array('visits'),array('-visits'));

Для получения версий браузера FireFox и посещений с них:

1
$data = get_ga_data(array('browserVersion'),array('visits'),array('-visits'),"browser==Firefox");

Для получения сайтов-источников переходов:

1
$data = get_ga_data(array('source'),array('visits'),array('-visits'),'medium==organic');

Для получения ключевых слов, по которым были переходы на Ваш сайт:

1
$data = get_ga_data(array('keyword'),array('visits'),array('-visits'),'medium==organic');

Используя эту информацию, мануал Гугла и AmCharts (о них я расскажу чуть позднее) можно сделать довольно приличный интерфейс. Вот, что получилось у меня, на примере данных этого блога:

Google Analytics APIGoogle Analytics API
Google Analytics APIGoogle Analytics API


Метки: , , ,


Каментов: 3

  1. Дмитрий:

    Благодарен за статью. Написано чётко. Вы обещали рассказать чуть позже как делать интерфейс на основе AmCharts. Ждать?

  2. Спасибо! Очень ёмко и доходчиво.
    2 Дмитрий: рекомендую посмотреть google charts (https://developers.google.com/chart/interactive/docs/gallery) и highcharts (http://www.highcharts.com/demo/) для графической визуализации данных.

Оставить камент