Website development
13 October 2008

Статистика Google Analytics на вашем сайте

Помню, как-то проскакивала пара записей (здесь и здесь) по поводу импортирования данных из Google Analytics для отображения сводных диаграмм на сайте, в общем, как на хабре. Прочитав вышеупомянутые топики и не обратив особого внимания тогда, я о них успешно «забыл» и пошел себе дальше. И вот сейчас, появилась необходимость реализовать нечто подобное на одном из своих проектов.

image

Просмотрев хабр еще раз, с удивлением обнаружил, что тогда так никто и не нашел какого-либо решения для реализации данной задачи. Поэтому, решил накропать скриптик для экспорта данных из GA и отображения их на сайте. Собственно, им и хочу поделиться с общественностью.

UPDATE:
Добавил еще одну версию, подробности и линк под катом.


Скачать можно отсюда.

Новую версию забирать здесь.
В config.php добавлена переменная $id, которая соответствует id в Google Analytics. Данный id используется в URL каждого из отчетов.
Т.е., можно либо в конфиге указать свой id в этой версии, либо подкорректировать переменные $url в предыдущей, указав в строке запроса необходимый id.
Спасибо Orenlab за замечание.

UPDATE 2:

Следующая версия здесь.
В ga.php из запроса убран www.askapache.com
Без этой переменной все работает так же нормально. Зачем оно было надо — остается догадываться. Просмотрел гугловые заголовки — ничего подобного не увидел.
Спасибо AlexSpaizNet за замечание.

UPDATE 3:
Добавлена версия 1.0
Забирать отсюда
Это первый и последний релиз скрипта в том виде и с теми функциями, которые сейчас есть. С его помощью можно без особых сложностей подогнать все под свои нужды и использовать.

Измениения таковы:
— Немного перестроен парсер. К сожалению, возникли определенные трудности при работе с установленным в GA английским, поэтому:
ВНИМАНИЕ! Для правильной работы в настройках Google Analytics обязательно должен быть установлен русский язык

— Добавлены графики по посещениям
— Функция stripos заменена на strpos, так как stripos не работает в неокторых версиях PHP
— Решена проблема с кэшированием настроек и данных для графиков. Теперь при каждом рефреше вам должны отображаться обновленные данные
— index.html заменен на index.php
— в config.php появилась переменная $path — в качестве ее значения необходимо указать полный пусть к директории, в который будут писаться файлы
— также добавлена переменаая $debug — если она установлена как true, будет создаваться файл log.txt, в который будут сваливаться потоком, все отчеты, полученные от Google Analytics (т.е. именно те данные, который отдал гугл, еще до того как мы их пропарсили)

Список всех версий — здесь

UPDATE 4:
В связи с последними изменениями в GA вышла версия 2.0b
Забирать как обычно отсюда

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

Итак, во-первых гугл поменял формат дат в отчетах, теперь вместо 25.10.2008 это выглядит как 25 октября 2008 г.
Кроме того, что-то поменялось в определении языка, используемому в отчетах. Сейчас через скрипт я всегда получаю англ язык, через броузер, нормально забирая отчет, получаю тот, который должен быть. С чем это связано пока не разобрался.
Итак, собственно к изменениям.

1) Решено было перейти на другой тип отчетов — TSV, как оказалось, под этим загадочным названием скрывается текстовый файл с разделителями табуляции. Это позволило нам вообще не зависеть от языка.

итак, во всех переменных $url в stat.php fmt=2 изменен на fmt=3

2) так как теперь у нас другой разделить в текстовых файлах — в обработках меняем "," на "\t"
эти строки выглядят примерно как
$line=explode("\t",$lines[$i]);

3) поскольку дату мы получаем уже в другом виде, форматнуть ее так как раньше уже не получится, посему камментим строки после
//форматируем дату

4) ну и собственно в анл языке принято тысячную долю отделять запятой, которую мы удаляем для того, чтобы amcharts нормально рисовал график

//убираем символ разделителя тысячи
$line[1]=str_replace(chr(194).chr(160),"",$line[1]);
$line[1]=str_replace(",","",$line[1]);
$line[2]=str_replace(chr(194).chr(160),"",$line[2]);
$line[2]=str_replace(",","",$line[2]);

Вроде все… с проблемами с русским разберемся в ближайшее время.

UPDATE 5:
Появилась версия 2.0.1
Забираем
Теперь нормально работает русский язык.
Изменения внесены в файл ga.php, добавлен один кукис — $aFoundCookies[1][]=«AnalyticsUserLocale=ru»;

Ну и по форматированию даты небольшие изменения сделаны в stat.php (но это не обязательно...)

Вкратце опишу главные нюансы, настройку и принцип работы.
(руководство по установке ниже)

Итак, наверно всем известно, что есть возможность получить из GA отчет в одном из форматов (PDF, XML, CSV и что-то еще). Таким образом, это самый простой способ экспорта данных. Однако, скачать отчет возможно лишь только после авторизации, и никаких внешних ссылок для скачивания отчета без авторизации недоступно. Правда, есть возможность отправки отчета на мыло (читал, что некоторые таким образом экспортили данные, т.е. отчет отправлялся в мыло, потом по крону запускался скрипт, который забирал почту, и парсил полученный отчет, но, имхо, это бред). В общем, для получения нам необходимо сэмулировать логин в систему и получить после этого данные. Для этого используем скрипт ga.php (который, кстати, писан не мною, а найден несколько месяцев назад в дебрях форума серча, за что спасибо разработчику, т.к. это сэкономило время на разбор гугловой аутентификации).
Для реализации задачи нам бы подошли форматы либо XML, либо CSV. Уж не знаю, что меня в тот момент дернуло, но я остановился на последнем, т.е. это обычный текстовый файл, который нам необходимо определенным образом пропарсить для импорта данных и построения графиков.

Парсит полученные данные у нас скрипт stat.php (он и является основным запускаемым скриптом, который подгружает в себя ga.php и, короче говоря, генерирует резалтные файлы на диске для создания диаграмм)
Я попытался максимально прокомментировать код, чтобы было понятно, что куда и зачем, и можно было без особых сложностей добавить нужный отчет. Я же взял, на свое усмотрение, нужные мне 6 отчетов: Посещаемость с начала существования ресурса (дата указывается в настройках), Посещаемость за последние три месяца, Источники переходов, География посетителей, используемые браузеры и ОС за последние 30 дней.

Все настройки указываются в config.php

Кстати, на сайте, для которого мне необходимо было сделать отображение статистики, код google analytics был установлен только несколько месяцев назад, но хотелось показать рост посещаемости с самого начала существования, т.е. за два с лишним года в данном случае. Поэтому была добавлена возможность «приклеить» к данным, полученным из GA, информацию о посещаемости за время предшествующее установке гуглового счетчика. по умолчанию — это статичный файл default.csv, сформированным необходимым образом (в архиве есть пример всех csv-файлов, включая этот). Откуда брать для него данные — решать вам, в моем случае на сайте было установлено аж 4 счетчика вроде рамблера, мейлру и т.п. (чьи показания, кстати, разнятся ооочень существенно). Если надобности использования подобной схемы нет, просто укажите имя переменной, указывающей имя данного файла как false.

Для отображения диаграмм заюзаны amCharts. Это платный продукт, стоимостью 85 евро за односайтовую лицензию. Однако, доступна и бесплатная версия, которая отличается лишь тем, что на диаграммах выводится ненавязчивая ссылка на сайт разработчика.
Настройки каждой из диаграмм указываются в соответствующих xml-файлах, которые хорошо прокомментированы, и я думаю, разобраться, что там к чему не составит большого труда. Я же для представления взял цветовую гамму, аналогичную графикам на хабре.
Данные для построения диаграмм подгружаются из сгенерированных нами выше csv файлов, специально подготовленных для использования в amCharts.

В конечном итоге мы получаем примерно следующее.

Теперь можно загнать скрипт в крон, и несколько раз в сутки обновлять статистику, например так:

0 */8 * * * /usr/local/bin/php /home/username/public_html/stats/stat.php

С удовольствием выслушаю замечания и пожелания!

PS. Установка
Файл config.default.php переименовываем в config.php
Редактируем его, указывая, как мнимум, следующие настройки:

1. Ваша учетная запись в Google Analytics
id берем после логина через броузер и перехода на главную страницу с отчетами:
www.google.com/analytics/reporting/?reset=1&id=xxxxxxx&scid=xxxxxxx

//учетная запись GA
$u="user";
$p="password";
$id="1234567";


2. Устанавливаем временную зону, если время сервера не совпадает с тем, что вам нужно
//устанавливаем временную зону, во избежание недоразумений, если время на сервере отличается от необходимого
putenv('TZ=Europe/Kiev');

Если совпадает — просто камментим или удаляем эти строки

3. Указываем начальную дату в формате YYYYMMDD
$datestart="20080101";

это дата, начиная с которой у вас будет рисоваться первый график, т.е. начало всей статистики

Все остальное можно не трогать, если все же хочется — остальные настройки прокомментированы

Далее заливаем все это в директорию на сервере
ВНИМАНИЕ! У вас должны быть права для записи в эту диреторию из PHP

Запрашиваем файл stat.php — он генерирует кучку .csv-файлов — это данные для графиков
Для отображения графиков, запрашиваем index.php

В свою очередь, stat.php можно засунуть в крон или любой другой планировщик задач и запускать несокльо раз в сутки для автоматического обновления графиков.

Удачи! Спасибо всем за проявленный интерес!

Внимание! Новая версия доступна здесь

+87
15.6k 306
Comments 142
Top of the day