|
|
Получение данных Google Analytics
К сожалению, для Google Analytics нет документированного API, поэтому информацию можно получить только экспериментальным путем или рассматривая соответствующие разработки. Я остановился на втором, за основу были взяты API Джо Тана для плагина WordPress Reports, и Google Analytics API для CakePHP. Второе не подходит в качестве базового решения поскольку требует CakePHP знакомиться с которым пока желания нет, да и ставить фреймворк из-за простенького скрипта захочется не всем. В API от Джо я значительно упростил часть работающую непосредственно с GA, убрал лишние запросы и парсинг, которому в элементе отвечающем за загрузку делать нечего.
Обратите внимание, что для авторизации требуются логин и пароль Google аккаунта, хранить на хостинге данные основного аккаунта не всегда целесообразно и безопасно, возможно стоит создать аккаунт специально для таких целей и открыть на нем доступ к отчетам сайта.
Параметры запроса
id — идентификатор сайта.
fmt — формат загружаемого отчета, 0 - PDF, 1 - XML, 2 - CSV, 3 - TSV.
pdr — интервал времени, в формате Ymd-Ymd, пример pdr=20080128-20080227.
rpt — имя отчета, пример rpt=BrowsersReport.
trows — запрашиваемое количество строк.
Другие параметры можно подсмотреть в адресной строке и ссылках в меню экспорт, на странице с необходимым отчетом.
Получение данных FeedBurner
В отличие от Google Analytics у FeedBurner есть документированный API — это значительно упрощает нашу задачу, тем более, что Awareness API не требует авторизации, единственный нюанс: нужно активировать Awareness API в панели управления FeedBurner.
Подготовка отчетов
Отчеты определяются в виде классов потомков абстрактного класса Report, при этом нужно определить метод required сообщающий загрузчику какие данные и с какого сервиса загружать, и метод create подготавливающий данные для отображения на сайте.
Самый простой способ получить необходимые данных из XML это использовать функцию SimpleXMLElement->xpath(). Загрузку файла и выборки упрощает класс xml при создании объекта нужно указать имя файла из директории data, вся работа по выборке данных возлагается на метод parse($xpath, $callbackFunction = ''). Параметр $xpath должен содержать описание необходимых данных на языке XPath, $callbackFunction имя функции вызываемой для каждого полученного элемента, чтобы получить данные требуемого формата, например, для удаления лишних пробелов.
Отображение данных
Пользователь должен сам выбирать как отображать полученные отчеты, поэтому подключение модулей экспорта максимально упрощено и для начала реализовано два модуля на основе amCharts и Google Chart т.е. с флешем и без. Изображения Google Chart загружаются и хранятся на сервере, чтобы избежать модификации страницы статистики каждый день, хотя это возможно и не оптимальный вариант.
Результаты работы можно посмотреть на примере страницы со статистикой этого сайта, и на представленном ниже графике отображающем ту же статистику с помощью Google Chart. Обратите внимание на столь любимый всеми отчет о ссылающихся блоггерах (или как его назвать даже не знаю). Только вот блоггеров выявлять все равно придется просматривая статистику GA и добавляя в referrаls.xml новые URL.
Установка
Распаковать содержимое архива с примером скрипта в корневую директорию сайта.
Из папки integration скопировать файл WordPressGA.php в директорию плагинов WordPress или папку dga в папку модулей Drupal, активировать соответствующий плагин или модуль в CMS.
Создать страницу с названием "Статистика", запретить для нее комментарии, задать необходимый url, примеры с кодом страниц есть в папке docs, не забудьте удостовериться, что html код страницы не искажен визуальным редактором WordPress или не вырезается фильтрами Drupal. Выглядит он примерно так:
<div class="gaStatsPage"> <!--gaTemplate swfObject--> <!--gaTemplate styles--> <!--gaTemplate amChart type=line name=visitors width=560 height=400--> <!--gaTemplate amChart type=line name=subscribers width=560 height=400--> <!--gaTemplate amChart type=pie name=country width=560 height=400--> <!--gaTemplate amChart type=pie name=city width=560 height=400--> <!--gaTemplate amChart type=pie name=browsers width=560 height=400--> <h3 class="gaLikeChartsHeader"> Ссылающиеся блоггеры</h3> <!--gaFile refsList--> </div>
Конфигурационные файлы как нетрудно догадаться находятся в директории config, файлы GoogleAnalytics.php и FeedBurner.php содержат настройки соответствующих сервисов, наиболее важные из которых это ваши логин, пароль и профиль сайта в GoogleAnalytics и uri фида в FeedBurner, config.php общие настройки скрипта из которых наиболее важная это список задействованных отчетов, если вы решите создать новый отчет то не забудьте добавить его имя в этот список иначе он не будет обрабатываться.
Чтобы загрузить и подготовить данные для отображения нужно запустить файл site-name/ga/public/ga.php, а чтобы не беспокоиться об этом каждый день нужно запускать его с помощью cron или заменяющих его сервисов.
Шаблоны
Для упрощения встраивания графиков в страницы можно использовать шаблоны, которые хранятся в папке templates. Вставить шаблон в страницу можно с помощью тега <!--gaTemplate templateName variable1=value1 variable2=value2--> где templateName имя шаблона, а variable1 и variable1 переменные которые можно использовать в файле шаблона взяв их имя в фигурные скобки {variable1}. Вставить в страницу файл из папки public/data (для отчетов в виде html) можно с помощью тега <!--gaFile fileName--> расширения html подставляется автоматически. В папке templates есть готовые шаблоны для вставки графиков amCharts.
Для обработки шаблонов используется функция gaIntegratorContentFilter, вы можете достаточно легко создать плагин упрощающий интеграцию графиков для вашей CMS, в качестве примера возьмите уже готовые плагины для WordPress и Drupal (не забудьте сообщить о своем плагине мне, чтобы я добавил его в скрипт, если, конечно, вы не против).
Sign in to add a comment

На текущий момент не работает закачка данных с сайта Google Analytics. Делаю так:
require_once('GoogleAnalytics.php'); $ga=new GoogleAnalytics; $ga->setOptions(array('_email' => 'email@domain.com','_password' => 'password')); $options=array( 'fmt' => 1, 'id' => 123456, 'pdr' => '20080501-20080531', 'rpt' => 'VisitorsOverviewReport', 'cmp' => 'avarage', ); $data=$ga->getReport($options);И в переменной $data появляется html-страница с ошибкой:
"An Error Has Been Detected Please try again. If you are experiencing long delays, please reduce the selected date range or disable date comparison. Thank you for your patience. © 2007 Google"
Причем когда захожу через браузер под этим же логином и паролем и ввожу руками этот урл, то файл закачивается нормально.
Адрес получается такой: https://www.google.com/analytics/reporting/export?fmt=3&cmp=avarage&pdr=20080501-20080531&id=123456&rpt=VisitorsOverviewReport
У других тоже не работает или это только у меня такие проблемы?
Может быть Google теперь требует дополнительные какие-нибудь куки для авторизации?
Заработало! У меня почему-то функция http_build_query по-умолчанию всавляла '&' вместо знака '&' в урл. Исправил строчку
на