R:Google Analytics — различия между версиями

Материал Psylab.info - энциклопедии психодиагностики
Перейти к: навигация, поиск
м (→‎Получение данных)
м (→‎Общее описание)
 
(не показано 30 промежуточных версий 2 участников)
Строка 5: Строка 5:
 
== Общее описание ==
 
== Общее описание ==
  
−
На данный момент в официальном репозитории CRAN нет пакетов для работы с API Google Analytics <ref>Возможно в скором времени там появится, по крайней, мере два пакета: <code>rga</code> и <code>ganalytics</code>.</ref>, но в сети можно обнаружить три рабочих решения: [https://code.google.com/p/r-google-analytics/ <code>RGoogleAnalytics</code>], [http://skardhamar.github.io/rga/ <code>rga</code>] и [https://github.com/jdeboer/ganalytics <code>ganalytics</code>].
+
На данный момент, несмотря на все многообразие, в официальном репозитории CRAN нет пакетов для работы с API Google Analytics. Однако на сторонних ресурсах, тем не менее, можно обнаружить три рабочих решения: [https://code.google.com/p/r-google-analytics/ <code>RGoogleAnalytics</code>], [http://skardhamar.github.io/rga/ <code>rga</code>], [https://github.com/jdeboer/ganalytics <code>ganalytics</code>] и [https://bitbucket.org/unikum/rga RGA]. <ref>Пакеты <code>rga</code>, <code>ganalytics</code> и <code>RGA</code> в ближайшее время могут появиться и в CRAN, работы в этом направлении уже ведутся.</ref>
  
−
Сравнительная таблица:
+
Сравнительная таблица пактов для работы с API Google Analytics:
  
 
{| class="wikitable sortable" width="800px"
 
{| class="wikitable sortable" width="800px"
Строка 14: Строка 14:
 
! width="20%" | [https://github.com/skardhamar/rga rga]
 
! width="20%" | [https://github.com/skardhamar/rga rga]
 
! width="20%" | [https://github.com/jdeboer/ganalytics ganalytics]
 
! width="20%" | [https://github.com/jdeboer/ganalytics ganalytics]
 +
! width="20%" | [https://bitbucket.org/unikum/rga RGA]
 
|-
 
|-
−
! colspan=4 | Общая информация
+
! colspan=5 | Общая информация
 
|-
 
|-
 
| Размещение
 
| Размещение
Строка 21: Строка 22:
 
| style="text-align:center" | [https://github.com/skardhamar/rga GitHub]
 
| style="text-align:center" | [https://github.com/skardhamar/rga GitHub]
 
| style="text-align:center" | [https://github.com/jdeboer/ganalytics GitHub]
 
| style="text-align:center" | [https://github.com/jdeboer/ganalytics GitHub]
 +
| style="text-align:center" | [https://bitbucket.org/unikum/rga Bitbucket]
 
|-
 
|-
 
| Дата публикации
 
| Дата публикации
Строка 26: Строка 28:
 
| style="text-align:center" | 27.11.2012
 
| style="text-align:center" | 27.11.2012
 
| style="text-align:center" | 25.05.2013
 
| style="text-align:center" | 25.05.2013
 +
| style="text-align:center" | 3.06.2014
 
|-
 
|-
 
| Дата последней стабильной версии
 
| Дата последней стабильной версии
 
| style="text-align:center" | 9.09.2013<ref>В апреле 2014 были внесены значительные изменения в код проекта, но после их внесения стабильного выпуска пока нет.</ref>
 
| style="text-align:center" | 9.09.2013<ref>В апреле 2014 были внесены значительные изменения в код проекта, но после их внесения стабильного выпуска пока нет.</ref>
−
| style="text-align:center" | 25.05.2014<ref>Дата последнего коммита на данный момент, т.к. стабильные выпуски данного пакета отсутствуют.</ref>
+
| style="text-align:center" | 1.06.2014<ref>Дата последней правки на данный момент, т.к. релизы данного пакета отсутствуют.</ref>
−
| style="text-align:center" | 24.05.2014<ref>Дата последнего коммита на данный момент, т.к. стабильные выпуски данного пакета отсутствуют.</ref>
+
| style="text-align:center" | 4.08.2014<ref>Дата последней правки на данный момент, т.к. релизы данного пакета отсутствуют.</ref>
 +
| style="text-align:center" | 5.08.2014<ref>Дата последней правки на данный момент, т.к. релизы данного пакета отсутствуют.</ref>
 
|-
 
|-
 
| Лицензия
 
| Лицензия
 
| style="text-align:center" | Apache 2.0
 
| style="text-align:center" | Apache 2.0
−
| style="text-align:center" | -
+
| style="text-align:center" | GPL2
 
| style="text-align:center" | MIT
 
| style="text-align:center" | MIT
 +
| style="text-align:center" | GPL2
 
|-
 
|-
 
| Зависимости
 
| Зависимости
 
| style="text-align:center" | <code>RCurl</code>, <code>rjson</code>, <code>lubridate</code>
 
| style="text-align:center" | <code>RCurl</code>, <code>rjson</code>, <code>lubridate</code>
−
| style="text-align:center" | <code>bitops</code>, <code>RCurl</code>, <code>jsonlite</code>, <code>lubridate</code>, <code>httr</code>
+
| style="text-align:center" | <code>RCurl</code>, <code>httr</code>, <code>jsonlite</code>, <code>lubridate</code>
−
| style="text-align:center" | <code>httr</code>, <code>plyr</code>, <code>stringr</code>
+
| style="text-align:center" | <code>httr</code>, <code>plyr</code>, <code>stringr</code>, <code>jsonlite</code>, <code>httpuv</code>
 +
| style="text-align:center" | <code>RCurl</code>, <code>httr</code>, <code>jsonlite</code>
 
|-
 
|-
−
! colspan=4 | Авторизация
+
! colspan=5 | Авторизация
 
|-
 
|-
 
| Авторизация по логину и паролю
 
| Авторизация по логину и паролю
 
| style="text-align:center" | +
 
| style="text-align:center" | +
 +
| style="text-align:center" | -
 
| style="text-align:center" | -
 
| style="text-align:center" | -
 
| style="text-align:center" | -
 
| style="text-align:center" | -
 
|-
 
|-
−
| Авторизация OAuth2<ref>Авторизация по Client ID и Client secret, полученным в [[API Consolehttps://console.developers.google.com|API Console]].</ref>
+
| Авторизация [https://developers.google.com/accounts/docs/OAuth2 OAuth2]<ref>Авторизация по Client ID и Client secret, полученным в [https://console.developers.google.com API Console].</ref>
 +
| style="text-align:center" | +
 
| style="text-align:center" | +
 
| style="text-align:center" | +
 
| style="text-align:center" | +
 
| style="text-align:center" | +
 
| style="text-align:center" | +
 
| style="text-align:center" | +
 
|-
 
|-
−
! colspan=4 | Доступ к API
+
! colspan=5 | Доступ к API
 
|-
 
|-
−
| Доступ к API базовых отчётов
+
| Доступ к [https://developers.google.com/analytics/devguides/reporting/core/v3/ API базовых отчётов]
 +
| style="text-align:center" | +
 
| style="text-align:center" | +
 
| style="text-align:center" | +
 
| style="text-align:center" | +
 
| style="text-align:center" | +
 
| style="text-align:center" | +
 
| style="text-align:center" | +
 
|-
 
|-
−
| Доступ к APIотчётов<br />многоканальных последовательностей
+
| Доступ к [https://developers.google.com/analytics/devguides/reporting/mcf/v3/ API отчётов<br />многоканальных последовательностей]
 
| style="text-align:center" | -
 
| style="text-align:center" | -
 
| style="text-align:center" | +
 
| style="text-align:center" | +
 
| style="text-align:center" | -
 
| style="text-align:center" | -
 +
| style="text-align:center" | +
 
|-
 
|-
−
| Доступ к API<br />конфигурации<ref>Информация по аккаунтам, профилям, представлениям, сегментам и целям.</ref>
+
| Доступ к [https://developers.google.com/analytics/devguides/config/mgmt/v3/ API конфигурации]<ref>Информация по аккаунтам, профилям, представлениям, сегментам и целям.</ref>
 
| style="text-align:center" | +
 
| style="text-align:center" | +
 
| style="text-align:center" | +
 
| style="text-align:center" | +
 
| style="text-align:center" | -
 
| style="text-align:center" | -
 +
| style="text-align:center" | +
 
|-
 
|-
 
| Пакетная обработка запросов<ref>Pagination - получение данных, превышающих ограничения Google (1000 на один запрос) путем организации нескольких запросов.</ref>
 
| Пакетная обработка запросов<ref>Pagination - получение данных, превышающих ограничения Google (1000 на один запрос) путем организации нескольких запросов.</ref>
 +
| style="text-align:center" | +
 
| style="text-align:center" | +
 
| style="text-align:center" | +
 
| style="text-align:center" | +
 
| style="text-align:center" | +
Строка 77: Строка 89:
 
|}
 
|}
  
−
С точки зрения внутренней организации кода пакеты можно охарактеризовать следующим образом. <code>RGoogleAnalytics</code> основан на использовании простых функции и S3-методов, но по внутренней организации похож на RC<ref>RC - Reference classes.</ref>. <code>rga</code> целиком основан на использовании RC. <code>ganalytics</code> основан на использовании S4 классов и методов. Получить обобщённое представление об ООП системе в R можно в [http://adv-r.had.co.nz/OO-essentials.html#rc этом] материале. Отметим, что все пакеты основываются на использовании пакета <code>httr</code>.
+
Помимо технических различий пакеты различаются еще рядом параметров, в частности методологией организации кода, документированностью функций, общей дружелюбностью и простотой в использовании пакета.  
  
−
В плане подробности документации, бесспорно, выигрывает пакет <code>ganalytics</code>. Он обладает довольно подробным <code>README</code> файлом, описывающим практически всю функциональность пакета. Помимо этого, пакет также содержит полную документацию всех функций, которая поставляется вместе с пакетом. Пакет <code>rga</code> обладает <code>README</code> файлом, описывающем лишь основы работы с пакетом и не включает в себя описание ряда возможностей пакета. При установке пакета документация содержит только краткое описание инициализации пакета. Документация пакета <code>RGoogleAnalytics</code> включает файл README, в котором пошагово описан процесс работы с пакетом, включающим весь функционал.
+
Так, пакет <code>RGoogleAnalytics</code> основан на использовании простых функции и S3-методов, но по внутренней организации похож на RC (Reference classes). Пакет <code>rga</code> целиком основан на использовании RC. Пакет <code>ganalytics</code> основан на использовании S4 классов и методов, что обеспечивает более точный контроль над вводимыми аргументами <ref>Получить обобщённое представление об принципах и реализации ООП в R можно [http://adv-r.had.co.nz/OO-essentials.html#rc здесь]</ref>. При определенных различиях в реализации доступа к GA API, все пакеты, тем не менее, основываются на функционале пакета <code>httr</code>.
  
−
Таким образом, основным источником документации для рассматриваемых пакетов являются файлы RESDME, размещённые на сайтах разработчиков.
+
В плане подробности документации, бесспорно, выигрывает пакет <code>ganalytics</code>. Он обладает довольно подробным <code>README</code> файлом, расположенном на странице проекта [https://github.com/jdeboer/ganalytics ganalytics], и описывающим практически весь функционал пакета. Помимо этого, пакет также содержит полную документацию всех функций, которая поставляется вместе с пакетом. Пакет <code>rga</code> обладает <code>README</code> файлом, описывающем лишь основы работы с пакетом и не включает в себя описание ряда возможностей пакета. Справка по функциям, доступная при установке пакета, содержит только краткое описание процедуры получения доступа к GA API и описание структуры запроса к API. Другие полезные функции, в частности, получение списка доступных профилей GA-аккаунта, приходится искать вслепую. Документация пакета <code>RGoogleAnalytics</code> также имеет файл <code>README</code>, в котором пошагово описан процесс работы с пакетом, включающим весь функционал.
  
−
== Установка необходимых пакетов ==
+
В плане простоты использования, в свою очередь. лидирует пакет <code>rga</code>. В отличие от <code>ganalytics</code>, пакет <code>rga</code> позволяет указывать метрики, измерения, узкие сегменты и фильтры в виде аргументов сразу, в одной функции, что упрощает понимание структуры запроса и сегмента, и позволяет обрабатывать множество однотипных сегментов (например, страниц сайта) в цикле или <code>[a-z]pply</code>-функциях. Также <code>ganalytics</code> не имеет внутренних инструментов получения ID профилей, а их получение из web-интерфейса Google Analytics с последующей вставкой в запросы <code>ganalytics</code> трудоемко и, самое главное, неинтуитивно. <code>RGoogleAnalytics</code>, несмотря на достаточно подробную документацию и достаточный для полноценной работы функционал, обладает несколько непрозрачной и неочевидной структурой запросов к GA API.
  
−
Устанавливаем и подключаем пакет {{r-package|devtools}}, для доступа к [https://github.com/ github] (требуется только в первый раз, для установки пакета {{r-package|rga}}):
+
== Получение ключей для доступа к API Google Analytics ==
  
−
{{r-code|code=<nowiki>> install.packages("devtools")
+
Прежде чем приступить к работе с пакетами, предназначенными для работы с Google Analytics API, необходимо создать новое приложение в [https://console.developers.google.com Google Developers Console] и получить '''Client ID''' (идентификатор клиента) и '''Client secret''' (секретный ключ клиента) для доступа к API Google Analytics. Не смотря на то, что некоторые пакеты, например <code>rga</code>, предоставляют ключи доступа, сгенерированные автором пакета, мы всё же рекомендуем получить собственные ключи, т.к. сторонние ключи могут быть в любой момент отозваны автором.
−
> library(devtools)</nowiki>}}
+
  
−
Устанавливаем пакет <code>rga</code>:
+
Пошаговая инструкция приведена ниже:
  
−
{{r-code|code=<nowiki>> install_github("rga", "skardhamar")</nowiki>}}
+
# Создание нового проекта (можно пропустить, если проект уже создан):
 +
#* Откройте страницу https://console.developers.google.com/project;
 +
#* В левой верхней части страницы нажмите на красную кнопку с надписью '''Create Project''';
 +
#* Во всплывающем окне в поле '''PROJECT NAME''' введите название проекта;
 +
#* Подтвердите создание проекта, нажав на кнопку '''Create'''.
 +
# Активация доступа к API Google Analytics:
 +
#* Выберите проект в списке проектов на странице https://console.developers.google.com/project;
 +
#* На боковой панели слева выберите пункт '''APIs & auth''';
 +
#* на вкладке '''APIs''' активируйте '''Analytics API''', нажав на кнопку с надписью `OFF` (убедитесь, что вместо надписи `OFF` появилось `ON`).
 +
# Создание нового приложения:
 +
#* В боковой панели слева выберите пункт '''APIs & auth''', подпункт '''Credentials''';
 +
#* В левой части страницы нажмите на кнопку с надписью '''Create new Client ID''';
 +
#* Во всплывающем окне выберите пункт '''Installed application''' в списке '''APPLICATION TYPE''' и пункт '''Other''' в списке '''INSTALLED APPLICATION TYPE'''.
 +
#* Подтвердите создание приложения, нажав на кнопку с надписью '''Create Client ID'''.
 +
# Получение Client ID и Client secret:
 +
#* Выберите проект в списке проектов на странице https://console.developers.google.com/project;
 +
#* В боковой панели слева выберите пункт '''APIs & auth''', подпункт '''Credentials''';
 +
#* В таблице с названием '''Client ID for native application''' скопируйте значения полей '''Client ID''' и '''Client secret'''.
  
−
== Организация доступа к API ==
+
Теперь вы в любой момент можете вернуться на страницу '''Credentials''' и узнать '''Client ID''' и '''Client secret'''.
  
−
Загрузка пакета доступа к GA (требуется только в начале работы при запуске новой R-сессии):
+
== Пакет <code>rga</code> ==
  
−
{{r-code|code=<nowiki>> library(rga)</nowiki>}}
+
=== Установка пакета ===
  
−
Запрет верификации SSL-соединения (требуется только для ОС Windows, чтобы избежать ошибок при аутентификации):
+
Исходный код пакета <code>rga</code> располагается на [https://github.com github], поэтому установить его можно с помощью функции <code>install_github</code> из пакета {{r-package|devtools}}:
  
−
{{r-code|code=<nowiki>> options(RCurlOptions = list(capath = system.file("CurlSSL", "cacert.pem", package = "RCurl"), ssl.verifypeer = FALSE))</nowiki>}}
+
{{r-code|code=<nowiki>> devtools::install_github("rga", "skardhamar")</nowiki>}}
  
−
Для создания ключа аутентификации потребуется переход в браузер, подтверждение доступа и копирование ключа в консоль. Опционально  команда создает отдельный файл, который потом можно использовать для аутентификации без перехода в браузер<ref>Аргумент <code>where</code> с указанием пути и имени файла.</ref>.
+
=== Авторизация ===
  
−
{{r-code|code=<nowiki>> rga.open(instance = "ga", where = "ga.rga")</nowiki>}}
+
Перед началом работы необходимо загрузить пакет <code>rga</code> (требуется только в начале работы при запуске новой R-сессии):
  
−
Видим, что в директории проекта появился файл <code>ga.rga</code><ref>Можно указать любой удобный путь и имя файла.</ref>. Теперь при повторном использовании этой команды будет осуществляться проверка наличия файла <code>ga.rga</code> в рабочей директории и, если такой файл будет найден, то данные для аутентификации будут взяты из данного файла.
+
{{r-code|code=<nowiki>> library(rga)</nowiki>}}
  
−
Второй вариант аутентификации с созданием собственного клиента API и ключей доступа:
+
Для предоставления доступа к данным Google Analytics API из пакета <code>rga</code> неободимо пройти процедуру авторизации. Для этого используется функция <code>rga.open</code>, которая принимает следующие аргументы:
  
−
# Необходимо создать проект на странице https://console.developers.google.com/project;
+
* <code>instance</code> - имя переменной, которая будет содержать информацию о доступе к APi Google Analytics;
−
# На вкладке APIs & auth на вкладке APIs надо активировать Analytics API, нажав на кнопку, где написано <code>OFF</code>.
+
* <code>where</code> - путь и/или имя файла, который будет использоваться для кэширования информации;
−
# Во вкладке APIs & auth перейти во вкладку Credentials, где выбрать Create new Client ID;
+
* <code>client.id</code> - ID клиента;
−
# При создании Client ID выбрать APPLICATION TYPE: Installed application, INSTALLED APPLICATION TYPE: other, и нажать create;
+
* <code>client.secret</code> - секретный ключ.
−
# В результате будет Client ID = и Client secret = ;
+
−
# На вкладке Consent screen необходимо выбрать рабочий email и дать название приложению (Product name), сохранить;
+
  
−
Создаем постоянный ключ (откроется браузер, где надо будет выбрать свой почтовый аккаунт и подтвердить вход в API, тогда выдадут код, который надо будет вставить в консоль):
+
Для получения токена доступа потребуется переход в браузер, подтверждение доступа и копирование код доступа в консоль. Опционально команда создает отдельный файл, который потом можно использовать для аутентификации без перехода в браузер<ref>Аргумент <code>where</code> с указанием пути и имени файла.</ref>.
  
−
{{r-code|code=<nowiki>> rga.open(instance = "ga", client.id = "", client.secret = "", where = "api.rga")</nowiki>}}
+
{{r-code|code=<nowiki>> rga.open(instance = "ga", where = "ga.rga")</nowiki>}}
  
−
Пояснения по значениям аргументов:
+
Видим, что в директории проекта появился файл <code>ga.rga</code><ref>Можно указать любой удобный путь и имя файла.</ref>. Теперь при повторном использовании этой команды будет осуществляться проверка наличия файла <code>ga.rga</code> в рабочей директории и, если такой файл будет найден, то данные для аутентификации будут взяты из данного файла.
  
−
* <code>client.id</code> необходимо вставить сюда Client ID;
+
Второй вариант аутентификации с использованием собственных ключей доступа:
−
* <code>client.secret</code> необходимо вставить сюда Client secret.
+
 
 +
{{r-code|code=<nowiki>> rga.open(instance = "ga", client.id = "XXXXXX", client.secret = "XXXXXXX", where = "ga.rga")</nowiki>}}
 +
 
 +
После выполнения данной команды будет открыт интернет браузер со страницей запроса подтверждения разрешения на доступ к данным Google Analytics. Необходимо авторизоваться под своей учётной записью Google и подтвердить разрешение на доступ к данным Google Analytics. Отметим, что пакет `RGA` запрашивает доступ '''только для чтения''' данных.
  
 
После успешной аутентификации информацию о установленном подключении можно получить с помощью команды <code>ga$status()</code> или более подробную информацию <code>ga$show()</code>.
 
После успешной аутентификации информацию о установленном подключении можно получить с помощью команды <code>ga$status()</code> или более подробную информацию <code>ga$show()</code>.
  
−
== Получение данных ==
+
=== Получение данных ===
 +
 
 +
Пакет <code>rga</code> позволяет получить доступ к различным API Google Analytics. Поскольку объекты, формируемые пакетом <code>rga</code>, относятся к классу <code>refClass</code>, что не является широко распространённой системой в данный момент, то ниже мы проведём небольшой обзор доступных функций и методов.
  
−
Получить информацию о всех доступных методах, доступных для класса <code>rga</code> можно с помощью команды <code>ga$explore()</code>:
+
Получить общую информацию о классе <code>rga</code> можно с помощью функции <code>getRefClass()</code>:
  
−
{{r-code|code=<nowiki>> ga$explore()
+
{{r-code|code=<nowiki>> getRefClass(Class = "rga")
 
Generator for class "rga":
 
Generator for class "rga":
  
Строка 155: Строка 186:
 
</nowiki>}}
 
</nowiki>}}
  
−
Наиболее полезными являются:  
+
Получить информацию о всех методах, доступных для класса <code>rga</code> можно с помощью команды <code>rga$methods()</code>:
 +
 
 +
{{r-code|code=<nowiki>> rga$methods()
 +
[1] "callSuper"          "copy"                "explore"            "export"              "field"              "getAccounts"       
 +
[7] "getClass"            "getData"            "getDataInBatches"    "getDataInWalks"      "getFirstDate"        "getGoals"         
 +
[13] "getMCFData"          "getMCFDataInBatches" "getMCFDataInWalks"  "getMGMTData"        "getProfiles"        "getRefClass"       
 +
[19] "getSegments"        "getToken"            "getWebProperties"    "import"              "initFields"          "initialize"       
 +
[25] "isToken"            "isTokenExpired"      "isWhere"            "prepare"            "refreshToken"        "setToken"         
 +
[31] "show"                "status"              "tokenExpiresIn"      "trace"              "untrace"            "usingMethods" 
 +
</nowiki>}}
 +
 
 +
Наиболее полезными являются:
  
−
* <code>explore</code> - получение информации о о классе <code>rga</code>;
 
 
* <code>getAccounts</code> - получение списка аккаунтов в, к которым пользователь имеет доступ;
 
* <code>getAccounts</code> - получение списка аккаунтов в, к которым пользователь имеет доступ;
 
* <code>getData</code> - получение данных из GA API базового отчёта;
 
* <code>getData</code> - получение данных из GA API базового отчёта;
Строка 170: Строка 211:
 
* <code>show</code> - получение подробной информации о данных подключения к GA;
 
* <code>show</code> - получение подробной информации о данных подключения к GA;
 
* <code>status</code> - получение краткой информации о статусе подключения к GA;
 
* <code>status</code> - получение краткой информации о статусе подключения к GA;
 +
 +
Получить справку по тому или иному методу можно с помощью команды <code>rga$help(topic)</code>, где вместо <code>topic</code> нужно подставить название интересующего метода:
 +
 +
{{r-code|code=<nowiki>> rga$help("getWebProperties")
 +
Call:
 +
$getWebProperties(accountId = , start = , max = )
 +
</nowiki>}}
 +
Вызов метода осуществляется аналогично доступу к элементам списка посредством оператора <code>$</code>. После создания объекта с помощью функции <code>rga.open()</code> к методам можно обратиться с помощью конструкции <code>object$methodName()</code>, где <code>object</code> - имя, которое было указано в качестве аргумента <code>instance</code> при вызове функции <code>rga.open()</code>, а <code>methodName()</code> - один из вышеперечисленных методов.
  
 
Узнать какие аргументы, а также их значения по умолчанию, можно передать тому или иному методу можно узнать с помощью функции <code>args</code>. Например:
 
Узнать какие аргументы, а также их значения по умолчанию, можно передать тому или иному методу можно узнать с помощью функции <code>args</code>. Например:
Строка 180: Строка 229:
 
     output.raw, output.formats, return.url = FALSE, rbr = FALSE,  
 
     output.raw, output.formats, return.url = FALSE, rbr = FALSE,  
 
     envir = .GlobalEnv)  
 
     envir = .GlobalEnv)  
−
NULL</nowiki>}}
+
NULL
 +
</nowiki>}}
  
 
Пакет <code>rga</code> поддерживает работу как с [https://developers.google.com/analytics/devguides/reporting/core/v3/ API отчётов], так и с [https://developers.google.com/analytics/devguides/reporting/mcf/v3/ API многоканальных последовательностей].
 
Пакет <code>rga</code> поддерживает работу как с [https://developers.google.com/analytics/devguides/reporting/core/v3/ API отчётов], так и с [https://developers.google.com/analytics/devguides/reporting/mcf/v3/ API многоканальных последовательностей].
Строка 192: Строка 242:
 
Пояснения по значениям аргументов для метода <code>getData</code>:
 
Пояснения по значениям аргументов для метода <code>getData</code>:
  
−
* <code>ids</code> - номер профиля, из которого нужно выгрузить данные;
+
* <code>ids</code> - ID профиля, из которого нужно выгрузить данные;
−
* <code>start.date</code> - задает стартовое время в формате <code>%Y-%m-%d</code><ref>Получить начальную дату сбора статистики в GA можно с помощью команды <code> ga$getFirstDate(id)</code>.</ref>;
+
* <code>start.date</code> - символьная строка, которая задаёт стартовое время в формате <code>YYYY-MM-DD</code><ref>Получить начальную дату сбора статистики в GA можно с помощью команды <code> ga$getFirstDate(id)</code>.</ref>. Допускаются также значения "today", "yesterday", "ndaysAgo", где <code>n</code> - это количество дней;
−
* <code>end.date</code> - задает конечное время в формате <code>%Y-%m-%d</code><ref>В данном случае используется функция <code>Sys.Date()</code>, которая выводит текущую дату.</ref>;
+
* <code>end.date</code> - символьная строка, которая задаёт конечное время в формате <code>YYYY-MM-DD</code><ref>В данном случае используется функция <code>Sys.Date()</code>, которая выводит текущую дату.</ref>. Допускаются также значения "today", "yesterday", "ndaysAgo", где <code>n</code> - это количество дней;
−
* <code>date.format</code> - формат даты, который используется для преобразования дат, полученных в результате запроса (по умолчанию <code>%Y-%m-%d</code>);
+
* <code>date.format</code> - символьная строка, которая задаёт формат даты, который используется для преобразования дат, полученных в результате запроса (по умолчанию <code>%Y-%m-%d</code>);
−
* <code>metrics</code> - определяет показатели (столбцы), которые будут входить в таблицу с данными (по умолчанию <code>"ga:visits"</code>)<ref>Можно использовать не больше 10 метрик одновременно.</ref>;
+
* <code>metrics</code> - символьная строка, которая определяет показатели (столбцы), которые будут входить в таблицу с данными (по умолчанию <code>"ga:visits"</code>)<ref>Можно использовать не больше 10 метрик одновременно.</ref>;
−
* <code>dimensions</code> - определяет параметры (строки) таблицы, которые будут входить в таблицу с данными (по умолчанию <code>"ga:date"</code>)<ref>Можно использовать не больше 7 измерений одновременно.</ref>;
+
* <code>dimensions</code> - символьная строка, которая определяет параметры (строки) таблицы, которые будут входить в таблицу с данными (по умолчанию <code>"ga:date"</code>)<ref>Можно использовать не больше 7 измерений одновременно.</ref>;
−
* <code>segment</code> - определяет сегмент данных (как правило, страницы/разделы сайта);
+
* <code>segment</code> - символьная строка, которая определяет сегмент данных (как правило, страницы/разделы сайта);
−
* <code>sort</code> - определяет, по какому из столбцов будет производиться сортировка данных в таблице<ref>Поддерживается как прямая, так и обратная сортировка</ref>;
+
* <code>sort</code> - символьная строка, которая определяет, по какому из столбцов будет производиться сортировка данных в таблице<ref>Поддерживается как прямая, так и обратная сортировка</ref>;
−
* <code>filters</code> - определяет фильтры, которые накладываются на данные (в определенной мере аналог сегментов);
+
* <code>filters</code> - символьная строка, которая определяет фильтры, применяемые при отборе данных на стороне сервера (в определенной мере аналог сегментов);
−
* <code>batch = TRUE</code> собирает все данные, а не только первые 10000 строк (необходимо, если предполагается, что строк может быть много).
+
* <code>batch = TRUE</code> - позволяет преодолеть ограничение на количество возвращаемых строк при ответе сервера (необходимо, если предполагается, что строк может быть больше, чем 10000).
−
* <code>walk = TRUE</code> собирает исходные, а не агрегированные данные.
+
* <code>walk = TRUE</code> - позволяет получить исходные, а не агрегированные данные.
  
−
Аргументы <code>ids</code>, <code>start.date</code>, <code>end.date</code> и <code>metrics</code> являются обязательными для запроса к GA API. Прм этом функция <code>getData()</code> требует только <code>id</code> профиля, т.к. остальные аргументы имеют значения по умолчанию. Все аргументы метода <code>getData</code>, а также значения по умолчанию можно посмотреть с помощью команды <code>args(ga$getData)</code>.
+
Аргументы <code>ids</code>, <code>start.date</code>, <code>end.date</code> и <code>metrics</code> являются обязательными для запроса к Google Analytics API. Все аргументы метода <code>getData</code>, а также значения по умолчанию, можно посмотреть с помощью команды <code>args(ga$getData)</code>.
  
 
Детальную информацию  можно найти на соответствующих страницах справочного руководства по GA API:
 
Детальную информацию  можно найти на соответствующих страницах справочного руководства по GA API:
Строка 214: Строка 264:
 
* по сегментам: https://developers.google.com/analytics/devguides/reporting/core/v3/segments
 
* по сегментам: https://developers.google.com/analytics/devguides/reporting/core/v3/segments
  
−
Получить доступ к API GA можно также с помощью веб-сервисов Google по следующей ссылке: https://developers.google.com/apis-explorer/?hl=ru#p/analytics/v3/. Для получения данных необходимо авторизоваться и задать требуемые параметры для запроса к API.
+
Получить доступ к API Google Analytics можно также с помощью веб-сервисов Google по следующей ссылке: https://developers.google.com/apis-explorer/?hl=ru#p/analytics/v3/. Для получения данных необходимо авторизоваться и задать требуемые параметры для запроса к API.
  
−
Пример сбора данных по выбранным метрикам и измерениям приведён ниже.
+
Пример сбора данных по выбранным метрикам и измерениям приведён ниже.
  
 
{{r-code|code=<nowiki>> ga.data <- ga$getData(ids = id,
 
{{r-code|code=<nowiki>> ga.data <- ga$getData(ids = id,
Строка 237: Строка 287:
  
 
{{r-code|code=<nowiki>> str(ga.data)
 
{{r-code|code=<nowiki>> str(ga.data)
−
'data.frame': 34 obs. of  4 variables:
+
'data.frame':   34 obs. of  4 variables:
 
  $ date    : Date, format: "2014-03-19" "2014-03-20" "2014-03-21" "2014-03-22" ...
 
  $ date    : Date, format: "2014-03-19" "2014-03-20" "2014-03-21" "2014-03-22" ...
 
  $ pageviews: num  9032 11914 10494 7173 8561 ...
 
  $ pageviews: num  9032 11914 10494 7173 8561 ...
Строка 260: Строка 310:
 
* [[R:Google Analytics/Параметры и измерения|Google Analytics - Параметры и измерения]]
 
* [[R:Google Analytics/Параметры и измерения|Google Analytics - Параметры и измерения]]
 
* [[R:Google Analytics/Примеры|Примеры анализа данных Google Analytics в R]]
 
* [[R:Google Analytics/Примеры|Примеры анализа данных Google Analytics в R]]
−
 
  
 
[[Категория:R]]
 
[[Категория:R]]
 
[[Категория:Веб-аналитика]]
 
[[Категория:Веб-аналитика]]

Текущая версия на 11:27, 6 августа 2014


Общее описание

На данный момент, несмотря на все многообразие, в официальном репозитории CRAN нет пакетов для работы с API Google Analytics. Однако на сторонних ресурсах, тем не менее, можно обнаружить три рабочих решения: RGoogleAnalytics, rga, ganalytics и RGA. [1]

Сравнительная таблица пактов для работы с API Google Analytics:

Параметры сравнения RGoogleAnalytics rga ganalytics RGA
Общая информация
Размещение Google Code GitHub GitHub Bitbucket
Дата публикации 29.09.2010 27.11.2012 25.05.2013 3.06.2014
Дата последней стабильной версии 9.09.2013[2] 1.06.2014[3] 4.08.2014[4] 5.08.2014[5]
Лицензия Apache 2.0 GPL2 MIT GPL2
Зависимости RCurl, rjson, lubridate RCurl, httr, jsonlite, lubridate httr, plyr, stringr, jsonlite, httpuv RCurl, httr, jsonlite
Авторизация
Авторизация по логину и паролю + - - -
Авторизация OAuth2[6] + + + +
Доступ к API
Доступ к API базовых отчётов + + + +
Доступ к API отчётов
многоканальных последовательностей
- + - +
Доступ к API конфигурации[7] + + - +
Пакетная обработка запросов[8] + + + +

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

Так, пакет RGoogleAnalytics основан на использовании простых функции и S3-методов, но по внутренней организации похож на RC (Reference classes). Пакет rga целиком основан на использовании RC. Пакет ganalytics основан на использовании S4 классов и методов, что обеспечивает более точный контроль над вводимыми аргументами [9]. При определенных различиях в реализации доступа к GA API, все пакеты, тем не менее, основываются на функционале пакета httr.

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

В плане простоты использования, в свою очередь. лидирует пакет rga. В отличие от ganalytics, пакет rga позволяет указывать метрики, измерения, узкие сегменты и фильтры в виде аргументов сразу, в одной функции, что упрощает понимание структуры запроса и сегмента, и позволяет обрабатывать множество однотипных сегментов (например, страниц сайта) в цикле или [a-z]pply-функциях. Также ganalytics не имеет внутренних инструментов получения ID профилей, а их получение из web-интерфейса Google Analytics с последующей вставкой в запросы ganalytics трудоемко и, самое главное, неинтуитивно. RGoogleAnalytics, несмотря на достаточно подробную документацию и достаточный для полноценной работы функционал, обладает несколько непрозрачной и неочевидной структурой запросов к GA API.

Получение ключей для доступа к API Google Analytics

Прежде чем приступить к работе с пакетами, предназначенными для работы с Google Analytics API, необходимо создать новое приложение в Google Developers Console и получить Client ID (идентификатор клиента) и Client secret (секретный ключ клиента) для доступа к API Google Analytics. Не смотря на то, что некоторые пакеты, например rga, предоставляют ключи доступа, сгенерированные автором пакета, мы всё же рекомендуем получить собственные ключи, т.к. сторонние ключи могут быть в любой момент отозваны автором.

Пошаговая инструкция приведена ниже:

  1. Создание нового проекта (можно пропустить, если проект уже создан):
    • Откройте страницу https://console.developers.google.com/project;
    • В левой верхней части страницы нажмите на красную кнопку с надписью Create Project;
    • Во всплывающем окне в поле PROJECT NAME введите название проекта;
    • Подтвердите создание проекта, нажав на кнопку Create.
  2. Активация доступа к API Google Analytics:
    • Выберите проект в списке проектов на странице https://console.developers.google.com/project;
    • На боковой панели слева выберите пункт APIs & auth;
    • на вкладке APIs активируйте Analytics API, нажав на кнопку с надписью `OFF` (убедитесь, что вместо надписи `OFF` появилось `ON`).
  3. Создание нового приложения:
    • В боковой панели слева выберите пункт APIs & auth, подпункт Credentials;
    • В левой части страницы нажмите на кнопку с надписью Create new Client ID;
    • Во всплывающем окне выберите пункт Installed application в списке APPLICATION TYPE и пункт Other в списке INSTALLED APPLICATION TYPE.
    • Подтвердите создание приложения, нажав на кнопку с надписью Create Client ID.
  4. Получение Client ID и Client secret:
    • Выберите проект в списке проектов на странице https://console.developers.google.com/project;
    • В боковой панели слева выберите пункт APIs & auth, подпункт Credentials;
    • В таблице с названием Client ID for native application скопируйте значения полей Client ID и Client secret.

Теперь вы в любой момент можете вернуться на страницу Credentials и узнать Client ID и Client secret.

Пакет rga

Установка пакета

Исходный код пакета rga располагается на github, поэтому установить его можно с помощью функции install_github из пакета devtools:

КодR

<syntaxhighlight lang="r">> devtools::install_github("rga", "skardhamar")</syntaxhighlight>

Авторизация

Перед началом работы необходимо загрузить пакет rga (требуется только в начале работы при запуске новой R-сессии):

КодR

<syntaxhighlight lang="r">> library(rga)</syntaxhighlight>

Для предоставления доступа к данным Google Analytics API из пакета rga неободимо пройти процедуру авторизации. Для этого используется функция rga.open, которая принимает следующие аргументы:

  • instance - имя переменной, которая будет содержать информацию о доступе к APi Google Analytics;
  • where - путь и/или имя файла, который будет использоваться для кэширования информации;
  • client.id - ID клиента;
  • client.secret - секретный ключ.

Для получения токена доступа потребуется переход в браузер, подтверждение доступа и копирование код доступа в консоль. Опционально команда создает отдельный файл, который потом можно использовать для аутентификации без перехода в браузер[10].

КодR

<syntaxhighlight lang="r">> rga.open(instance = "ga", where = "ga.rga")</syntaxhighlight>

Видим, что в директории проекта появился файл ga.rga[11]. Теперь при повторном использовании этой команды будет осуществляться проверка наличия файла ga.rga в рабочей директории и, если такой файл будет найден, то данные для аутентификации будут взяты из данного файла.

Второй вариант аутентификации с использованием собственных ключей доступа:

КодR

<syntaxhighlight lang="r">> rga.open(instance = "ga", client.id = "XXXXXX", client.secret = "XXXXXXX", where = "ga.rga")</syntaxhighlight>

После выполнения данной команды будет открыт интернет браузер со страницей запроса подтверждения разрешения на доступ к данным Google Analytics. Необходимо авторизоваться под своей учётной записью Google и подтвердить разрешение на доступ к данным Google Analytics. Отметим, что пакет `RGA` запрашивает доступ только для чтения данных.

После успешной аутентификации информацию о установленном подключении можно получить с помощью команды ga$status() или более подробную информацию ga$show().

Получение данных

Пакет rga позволяет получить доступ к различным API Google Analytics. Поскольку объекты, формируемые пакетом rga, относятся к классу refClass, что не является широко распространённой системой в данный момент, то ниже мы проведём небольшой обзор доступных функций и методов.

Получить общую информацию о классе rga можно с помощью функции getRefClass():

КодR

<syntaxhighlight lang="r">> getRefClass(Class = "rga") Generator for class "rga": Class fields: Name: client.id client.secret where token Class: character character character list Class Methods: "callSuper", "copy", "explore", "export", "field", "getAccounts", "getClass", "getData", "getDataInBatches", "getDataInWalks", "getFirstDate", "getGoals", "getMCFData", "getMCFDataInBatches", "getMCFDataInWalks", "getProfiles", "getRefClass", "getSegments", "getToken", "getWebProperties", "import", "initFields", "initialize", "isToken", "isTokenExpired", "isWhere", "prepare", "processManagementData", "refreshToken", "setToken", "show", "status", "tokenExpiresIn", "trace", "untrace", "usingMethods" Reference Superclasses: "envRefClass" </syntaxhighlight>

Получить информацию о всех методах, доступных для класса rga можно с помощью команды rga$methods():

КодR

<syntaxhighlight lang="r">> rga$methods() [1] "callSuper" "copy" "explore" "export" "field" "getAccounts" [7] "getClass" "getData" "getDataInBatches" "getDataInWalks" "getFirstDate" "getGoals" [13] "getMCFData" "getMCFDataInBatches" "getMCFDataInWalks" "getMGMTData" "getProfiles" "getRefClass" [19] "getSegments" "getToken" "getWebProperties" "import" "initFields" "initialize" [25] "isToken" "isTokenExpired" "isWhere" "prepare" "refreshToken" "setToken" [31] "show" "status" "tokenExpiresIn" "trace" "untrace" "usingMethods" </syntaxhighlight>

Наиболее полезными являются:

  • getAccounts - получение списка аккаунтов в, к которым пользователь имеет доступ;
  • getData - получение данных из GA API базового отчёта;
  • getFirstDate - получения даты начала сбора статистики для данного id;
  • getGoals - получение списка целей;
  • getMCFData - получение данных из GA API многоканальных последовательностей;
  • getProfiles - получение списка ресурсов и представлений сайтов, к которым пользователь имеет доступ[12];
  • getSegments - получение списка сегментов;
  • getToken - получение токена дотупа;
  • getWebProperties - получение списка ресурсов, к которым пользователь имеет доступ[13];
  • refreshToken - обновление токена доступа;
  • show - получение подробной информации о данных подключения к GA;
  • status - получение краткой информации о статусе подключения к GA;

Получить справку по тому или иному методу можно с помощью команды rga$help(topic), где вместо topic нужно подставить название интересующего метода:

КодR

<syntaxhighlight lang="r">> rga$help("getWebProperties") Call: $getWebProperties(accountId = , start = , max = ) </syntaxhighlight>

Вызов метода осуществляется аналогично доступу к элементам списка посредством оператора $. После создания объекта с помощью функции rga.open() к методам можно обратиться с помощью конструкции object$methodName(), где object - имя, которое было указано в качестве аргумента instance при вызове функции rga.open(), а methodName() - один из вышеперечисленных методов.

Узнать какие аргументы, а также их значения по умолчанию, можно передать тому или иному методу можно узнать с помощью функции args. Например:

КодR

<syntaxhighlight lang="r">> args(ga$getData) function (ids, start.date = format(Sys.time(), "%Y-%m-%d"), end.date = format(Sys.time(), "%Y-%m-%d"), date.format = "%Y-%m-%d", metrics = "ga:users,ga:sessions,ga:pageviews", dimensions = "ga:date", sort = "", filters = "", segment = "", fields = "", start = 1, max, messages = TRUE, batch, walk = FALSE, output.raw, output.formats, return.url = FALSE, rbr = FALSE, envir = .GlobalEnv) NULL </syntaxhighlight>

Пакет rga поддерживает работу как с API отчётов, так и с API многоканальных последовательностей.

Получения данных базовых отчётов:

КодR

<syntaxhighlight lang="r">> ga$getData(id, start.date, end.date, metrics, dimensions)</syntaxhighlight>

Получение данных по многоканальным последовательностям можно получить через функцию ga$getMCFData(). Аргументы методов getData и getMCFData совпадают[14].

Пояснения по значениям аргументов для метода getData:

  • ids - ID профиля, из которого нужно выгрузить данные;
  • start.date - символьная строка, которая задаёт стартовое время в формате YYYY-MM-DD[15]. Допускаются также значения "today", "yesterday", "ndaysAgo", где n - это количество дней;
  • end.date - символьная строка, которая задаёт конечное время в формате YYYY-MM-DD[16]. Допускаются также значения "today", "yesterday", "ndaysAgo", где n - это количество дней;
  • date.format - символьная строка, которая задаёт формат даты, который используется для преобразования дат, полученных в результате запроса (по умолчанию %Y-%m-%d);
  • metrics - символьная строка, которая определяет показатели (столбцы), которые будут входить в таблицу с данными (по умолчанию "ga:visits")[17];
  • dimensions - символьная строка, которая определяет параметры (строки) таблицы, которые будут входить в таблицу с данными (по умолчанию "ga:date")[18];
  • segment - символьная строка, которая определяет сегмент данных (как правило, страницы/разделы сайта);
  • sort - символьная строка, которая определяет, по какому из столбцов будет производиться сортировка данных в таблице[19];
  • filters - символьная строка, которая определяет фильтры, применяемые при отборе данных на стороне сервера (в определенной мере аналог сегментов);
  • batch = TRUE - позволяет преодолеть ограничение на количество возвращаемых строк при ответе сервера (необходимо, если предполагается, что строк может быть больше, чем 10000).
  • walk = TRUE - позволяет получить исходные, а не агрегированные данные.

Аргументы ids, start.date, end.date и metrics являются обязательными для запроса к Google Analytics API. Все аргументы метода getData, а также значения по умолчанию, можно посмотреть с помощью команды args(ga$getData).

Детальную информацию можно найти на соответствующих страницах справочного руководства по GA API:

Получить доступ к API Google Analytics можно также с помощью веб-сервисов Google по следующей ссылке: https://developers.google.com/apis-explorer/?hl=ru#p/analytics/v3/. Для получения данных необходимо авторизоваться и задать требуемые параметры для запроса к API.

Пример сбора данных по выбранным метрикам и измерениям приведён ниже.

КодR

<syntaxhighlight lang="r">> ga.data <- ga$getData(ids = id, + start.date = ga$getFirstDate(id), end.date = Sys.Date(), + metrics = "ga:users,ga:sessions,ga:pageviews", + dimensions = "ga:date", batch = TRUE)</syntaxhighlight>

После получения данных мы можем работать с переменной ga.data как с обычной таблицей данных (data.frame). Таблица данных, полученныя на предыдущем этапе, выглядит следующим образом (значения для psylab.info):

КодR

<syntaxhighlight lang="r">> head(ga.data) date pageviews sessions users 1 2014-03-19 9032 3651 3038 2 2014-03-20 11914 5028 4037 3 2014-03-21 10494 4388 3505 4 2014-03-22 7173 3133 2445 5 2014-03-23 8561 3676 2853 6 2014-03-24 11919 5043 3989</syntaxhighlight>

Структура таблицы имеют следующий вид:

КодR

<syntaxhighlight lang="r">> str(ga.data) 'data.frame': 34 obs. of 4 variables: $ date : Date, format: "2014-03-19" "2014-03-20" "2014-03-21" "2014-03-22" ... $ pageviews: num 9032 11914 10494 7173 8561 ... $ sessions : num 3651 5028 4388 3133 3676 ... $ users : num 3038 4037 3505 2445 2853 ...</syntaxhighlight>

Примечания

  1. ↑ Пакеты rga, ganalytics и RGA в ближайшее время могут появиться и в CRAN, работы в этом направлении уже ведутся.
  2. ↑ В апреле 2014 были внесены значительные изменения в код проекта, но после их внесения стабильного выпуска пока нет.
  3. ↑ Дата последней правки на данный момент, т.к. релизы данного пакета отсутствуют.
  4. ↑ Дата последней правки на данный момент, т.к. релизы данного пакета отсутствуют.
  5. ↑ Дата последней правки на данный момент, т.к. релизы данного пакета отсутствуют.
  6. ↑ Авторизация по Client ID и Client secret, полученным в API Console.
  7. ↑ Информация по аккаунтам, профилям, представлениям, сегментам и целям.
  8. ↑ Pagination - получение данных, превышающих ограничения Google (1000 на один запрос) путем организации нескольких запросов.
  9. ↑ Получить обобщённое представление об принципах и реализации ООП в R можно здесь
  10. ↑ Аргумент where с указанием пути и имени файла.
  11. ↑ Можно указать любой удобный путь и имя файла.
  12. ↑ Можно указать accountId (по умолчанию будет выведена информацию по всем аккаунтам).
  13. ↑ Можно указать accountId (по умолчанию будет выведена информацию по всем аккаунтам).
  14. ↑ Отличием является содержание показателей и измерений.
  15. ↑ Получить начальную дату сбора статистики в GA можно с помощью команды ga$getFirstDate(id).
  16. ↑ В данном случае используется функция Sys.Date(), которая выводит текущую дату.
  17. ↑ Можно использовать не больше 10 метрик одновременно.
  18. ↑ Можно использовать не больше 7 измерений одновременно.
  19. ↑ Поддерживается как прямая, так и обратная сортировка

Ссылки

См. также