Отображение данных Google Analytics на сайте
Евгений, 13 февраля 2008
После появления на хабре странички с импортированной из Google Analytics статистикой, зародилась мысль сделать что-то похожее, но чтобы любой желающий мог более менее легко это использовать на своем сайте и настраивать под свои требования.
Update: Скрипт обновился и размещен на Google Code. Описание в статье Статистика на сайте.
Получение данных Google Analytics
К сожалению, для Google Analytics нет документированного API, поэтому информацию можно получить только экспериментальным путем или рассматривая соответствующие разработки. Я остановился на втором, за основу были взяты API Джо Тана для плагина WordPress Reports, и Google Analytics API для CakePHP. Второе не подходит в качестве базового решения, поскольку требует CakePHP знакомиться с которым пока желания нет, да и ставить фреймворк из-за простенького скрипта захочется не всем. В API от Джо я значительно упростил часть работающую непосредственно с GA, убрал лишние запросы и парсинг, которому в элементе отвечающем за загрузку делать нечего.
Обратите внимание, что для авторизации требуются логин и пароль Google аккаунта, хранить на хостинге данные основного аккаунта не всегда целесообразно и безопасно, возможно стоит создать аккаунт специально для таких целей и открыть на нем доступ к отчетам сайта.
Подготовка отчетов
Самый простой способ получить необходимые данных из XML это использовать функцию SimpleXMLElement->xpath(). Вся работа по выборке данных возлагается на функцию parse($file, $xpath, $callbackFunction = ''). Значение параметра $file достаточно очевидно — это имя XML файла с данными GA, параметр $xpath должен содержать описание необходимых данных на языке XPath, $callbackFunction имя функции вызываемой для каждого полученного элемента, чтобы получить данные требуемого формата, например, для удаления лишних пробелов.
Отображение данных
Пользователь должен сам выбирать как отображать полученные отчеты, поэтому подключение модулей экспорта максимально упрощено и для начала реализовано два модуля на основе amCharts и Google Chart т.е. с флешем и без. Изображения Google Chart загружаются и хранятся на сервере, чтобы избежать модификации страницы статистики каждый день, хотя это возможно и не оптимальный вариант.
Результаты работы можно посмотреть на примере страницы со статистикой этого сайта (используется amCharts), которая совсем не блещет после того как он месяц пролежал, и на представленном ниже графике отображающем ту же статистику с помощью Google Chart. Обратите внимание на столь любимый всеми отчет о ссылающихся блоггерах (или как его назвать даже не знаю), теперь он будет обновляться каждый день, хотя временно размещен в iframe, опять таки, чтобы не работать с базой данных CMS. Только вот блоггеров выявлять все равно придется просматривая статистику GA и добавляя в config.php новые URL.


Установка
Установить скрипт достаточно просто, скопируйте папку ga в корневую директорию сайта. Укажите свои данные для аккаунта Google и профиль сайта в файле config.php. Создайте в CMS страницу и перейдя в режим редактирования HTML, внедрите в нее flash или img графики. Подробнее о внедрении графиков amCharts можно узнать на сайте разработчика в разделе документация, с графиками в формате img и так все понятно. Пример готовой страницы, есть в папке со скриптами. Настройки графиков amCharts хранятся в папке settings, настройки графиков Google Chart задаются в скрипте converter.php.Теперь чтобы загрузить и подготовить данные для отображения нужно запустить файл site-name/ga/ga.php, а чтобы не беспокоиться об этом каждый день нужно запускать его с помощью cron или заменяющих его сервисов.
Хотелось бы услышать ваше мнение, нужен ли подобный скрипт, какие возможности вы хотели бы в нем увидеть, как оградить его от посторонних вмешательств. За бортом осталась статистика FeedBurner которою можно сюда включить, если это кого-нибудь заинтересует. Все заинтересовавшиеся подписывайтесь на RSS и ждите обновлений.

Ошибся в URL :(
Интересно конечно, но скорее только со стороны того, как вывести цифры посещаемости сайта скажем на кнопку (счётчик размеров 88х31) - просто графики посещаемости, а уж тем более по браузерам и т.д. я думаю никому из посетителей сайта не интересны... интересны бывают лишь цифры посещаемjсти/подписчиков/рейтинг в той или иной системе - но это лишь моё мнение ;)
Ну какие графики показывать и показывать ли это в виде графиков, решать тому кто будет использовать скрипт. Браузеры я добавил, чтобы в примере были разные типы графиков.
Спасибо. Довольно полезная штука!
Хорошая вещь... только у меня не коннектится с сервера на GA, по timeout'у вылетает
Поставил себе на сервер, все работает. Правда немного подправил для своих нужд.
sunnybear, даже не знаю на сервере все загружается очень быстро до timeout`a там далеко. Нужно смотреть настройки php, возможно, отключено, что-то нужное (но тогда почему по таймауту а не с ошибкой), проверье доступен ли curl, и нет ли --disable-simplexml в Configure Command.
да нет, у меня сервер где-то не там, google-analytics не пингуется оттуда
Было бы здорово, если можно было бы взять статистику по континентам (по карте).
У меня почему-то ошибку выбивает
Fatal error: Call to undefined function curl_init() in /home/ilyuha/data/www/ilyuha.org/ga/curl.php on line 21Значит не установлен curl, пока без него никак, позже будет возможность использовать сокеты.
спасибо за статью. давно искал
Спасибо за совет! Попробую установить.
Скоро выложу новую версию, с упрощенной установкой, feedburner`ом, добавлю гео-таргетинг, возможно удастся упростить создание и настройку отчетов.
Вытягивает вместо xml-ек файл с извинениями. Каждый раз. Что за хрень...
Кто извиняется и за что, если не секрет.
К примеру, такое извинение:
скорее всего следствие ошибки в параметрах загружаемых отчетов, например, опечатки в параметре rpt, которую можно сразу и не заметить.
Да, извинения такие. Ничего не менял в архиве (кроме мэйл-пароль), потому странно. Сейчас буду копать.
а id своего сайта вписали?
Вписал. Вот только что убрал все отчеты кроме одного, и перепроверил данные.
Странно. Беру урл, запрашиваемый скриптом - вытягиваю нормальный xml. Скрипт вытягивает извинения. Что за зохри моро...
новшество, достойное внимание :)
А вот у меня запускается через крон, который находится в другой директории, пришлось править файлы на предмет замены относительного пути на абсолютный.
Можно в конфиге добавить настройку абсолютного пути, чтоб лишний раз не мучиться?
Уже сделано в новой версии скрипта, скоро выложу.
Отличное решение! Вот выше говорили, что не все посетителям будет интересно - это верно. Но можно же такую штуку сделать просто в CMS, чтобы администратору было видно.
Дополнительное спасибо за amCharts.
До этого возился с пхп-генератором jpgraph.
За amCharts спасибо не мне, а разработчику.
Обратите внимание, что этот скрипт обновился, новый скрипт и описание размещены на Google Code.
Было бы интересно вешать этот скрипт себе на сайт в открытый доступ и показывать еще такие данные:
- поисковые системы;
- топ 10-20 поисковых запросов;
- возможность посетителю выбрать самому диапазон дат статистики, или зашить в выпадающий список по месяцам.
Большое спасибо! Несколько дней искал такую инфу. Сегодня буду пробовать.
Вопрос: как запускать файл site-name/ga/ga.php кроном?
Обновите скрипт, отсюда.
В cPanel есть раздел Cron Jobs, там все должно быть предельно понятно.
Заполнять примерно так:
Minutes — 15, Hours — 0, Остальное — *, Команда —
/usr/local/bin/php -q $HOME/public_html/ss/public/ss.php 2>$HOME/cron.log. Путь к файлам указать свои, подробнее не могу, нет у меня сейчас под рукой cPanel.Поправка к предыдущему комменту.
Скрипт нужно запускать под php5, т.е. если под php подразумевается php4 (что на хостингах бывает очень часто) то команда должна быть такая:
/usr/local/bin/php5 -q $HOME/public_html/ss/public/ss.php 2>$HOME/cron.logя не понял, а можно ли вывести статистику без вордпресса??? так и не нашел какой файл надо запускать для этого...
Можно, вот пример полной статики, просто вставляете это на страницу и все, ничего дополнительно вызывать не нужно, но при этом нельзя выводить текстовые отчеты.
Читайте обновленную статью там написано как статистика встраивается в CMS.
директория только такая? http://new/ss/
поместил в /stats/ здесь изменил пути: http://designformasters.info/stuff/google-analytics-stats/static.txt не работает..
Я не совсем верно написал в предыдущем комменте, что ничего вызывать не нужно, это чтобы показать данные ничего вызывать не нужно если использовать код из примера.
Но прежде чем показать, данные нужно получить, а для этого нужно вызвать
/ss/public/ss.phpчерез браузер (подходит для первого запуска, отладки и если cron не доступен) или/ss/main.phpчерез cron.После запуска указанного файла, данные будут записаны в папку /ss/public/data и для их отображения можно будет использовать код из примера.
Пути, конечно, свои.
вызывал, данные почему-то не сохраняются (папка /ss/public/data/ пуста, права на запись есть). в общем вот что получилось:
http://www.e-stal.ru/stats.html
Посмотрел, скрипт не отрабатывает до конца (если бы работал он бы писал, что в какой файл сохранено и т.д.), смотрите в
ss/logs/error.log, у вас на сервере ошибки не отдаются.С ошибочными данными для авторизации в GA будет что-то типа:
Fatal error: Uncaught exception 'Exception' with message 'Your login and password don't match.Нужно бы это, конечно, отлавливать, и выдавать соответствующее сообщение, но это уж как набереться обновлений достаточно, тогда все поправлю.
Если, что-то другое пришлите лог через контактную форму (предварительно проверив).
Любопытно - нужно будет попробовать эту аналитику и на своем сайте
Установил и настроил мод. К сожалению в event.log записывает фразу Your login and password don't match. Make sure you've typed them in correctly.. Пароли верны, id тоже. Проверял 2 разных ящика (админа и не админа). Результат тот же.
В чем может быть дело? Может за год поменялась система входа и описанный способ уже не работает?
Система входа не менялась, у меня все работает.
Скрипт настроил, все отлично работает,
но есть одна неточность: данные по посещениям отличаюся на 200-300, т.е. на сервере аналитика статистика выше чем импортированная на сервер. Причем по просмотрам значения соходятся, только с посещениями проблема.
У кого то были подобные проблемы, как это исправить?
Может нужные какие то дополнительные настройки?
Спасибо.
Скрипт показывает посетителей, а не посещения, поэтому сравните с графиком посетителей в GA (слева ссылка «Посетители»).
Все верно, спасибо за разъеснения.