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

Материал Psylab.info - энциклопедии психодиагностики
Перейти к: навигация, поиск
(Общее описание)
м (Общее описание)
 
(не показано 17 промежуточных версий 2 участников)
Строка 5: Строка 5:
 
== Общее описание ==
 
== Общее описание ==
  
На данный момент, несмотря на все многообразие, в официальном репозитории 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>]. <ref>Пакеты <code>rga</code> и <code>ganalytics</code> в ближайшее время могут появиться и в CRAN, работы в этом направлении уже ведутся.</ref>
+
На данный момент, несмотря на все многообразие, в официальном репозитории 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>
  
Сравнительная таблица пактов для работы с GA API:
+
Сравнительная таблица пактов для работы с 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" | GPL
+
| 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>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" | -
 
|-
 
|-
 
| Авторизация [https://developers.google.com/accounts/docs/OAuth2 OAuth2]<ref>Авторизация по Client ID и Client secret, полученным в [https://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
 
|-
 
|-
 
| Доступ к [https://developers.google.com/analytics/devguides/reporting/core/v3/ 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" | +
Строка 65: Строка 74:
 
| style="text-align:center" | +
 
| style="text-align:center" | +
 
| style="text-align:center" | -
 
| style="text-align:center" | -
 +
| style="text-align:center" | +
 
|-
 
|-
 
| Доступ к [https://developers.google.com/analytics/devguides/config/mgmt/v3/ API конфигурации]<ref>Информация по аккаунтам, профилям, представлениям, сегментам и целям.</ref>
 
| Доступ к [https://developers.google.com/analytics/devguides/config/mgmt/v3/ API конфигурации]<ref>Информация по аккаунтам, профилям, представлениям, сегментам и целям.</ref>
Строка 70: Строка 80:
 
| 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" | +
Строка 79: Строка 91:
 
Помимо технических различий пакеты различаются еще рядом параметров, в частности методологией организации кода, документированностью функций, общей дружелюбностью и простотой в использовании пакета.  
 
Помимо технических различий пакеты различаются еще рядом параметров, в частности методологией организации кода, документированностью функций, общей дружелюбностью и простотой в использовании пакета.  
  
Так, пакет <code>RGoogleAnalytics</code> основан на использовании простых функции и S3-методов, но по внутренней организации похож на RC (Reference classes). Пакет <code>rga</code> целиком основан на использовании RC. <code>ganalytics</code> основан на использовании S4 классов и методов, что обеспечивает более точный контроль над вводимыми аргументами. Получить обобщённое представление об принципах и реализации ООП в R можно [http://adv-r.had.co.nz/OO-essentials.html#rc здесь]. При определенных различиях в реализации доступа к GA API, все пакеты, тем не менее, основываются на функционале пакета <code>httr</code>.
+
Так, пакет <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>.
  
 
В плане подробности документации, бесспорно, выигрывает пакет <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>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.
+
В плане простоты использования, в свою очередь. лидирует пакет <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.
  
== Пакет <code>rga</code> ==
+
== Получение ключей для доступа к API Google Analytics ==
  
=== Установка необходимых пакетов ===
+
Прежде чем приступить к работе с пакетами, предназначенными для работы с Google Analytics API, необходимо создать новое приложение в [https://console.developers.google.com Google Developers Console] и получить '''Client ID''' (идентификатор клиента) и '''Client secret''' (секретный ключ клиента) для доступа к API Google Analytics. Не смотря на то, что некоторые пакеты, например <code>rga</code>, предоставляют ключи доступа, сгенерированные автором пакета, мы всё же рекомендуем получить собственные ключи, т.к. сторонние ключи могут быть в любой момент отозваны автором.
  
Устанавливаем и подключаем пакет {{r-package|devtools}}, для доступа к [https://github.com/ github] (требуется только в первый раз, для установки пакета {{r-package|rga}}):
+
Пошаговая инструкция приведена ниже:
  
{{r-code|code=<nowiki>> install.packages("devtools")
+
# Создание нового проекта (можно пропустить, если проект уже создан):
> library(devtools)</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'''.
  
Устанавливаем пакет <code>rga</code>:
+
Теперь вы в любой момент можете вернуться на страницу '''Credentials''' и узнать '''Client ID''' и '''Client secret'''.
  
{{r-code|code=<nowiki>> install_github("rga", "skardhamar")</nowiki>}}
+
== Пакет <code>rga</code> ==
 +
 
 +
=== Установка пакета ===
 +
 
 +
Исходный код пакета <code>rga</code> располагается на [https://github.com github], поэтому установить его можно с помощью функции <code>install_github</code> из пакета {{r-package|devtools}}:
 +
 
 +
{{r-code|code=<nowiki>> devtools::install_github("rga", "skardhamar")</nowiki>}}
  
=== Организация доступа к API ===
+
=== Авторизация ===
  
Загрузка пакета доступа к GA (требуется только в начале работы при запуске новой R-сессии):
+
Перед началом работы необходимо загрузить пакет <code>rga</code> (требуется только в начале работы при запуске новой R-сессии):
  
 
{{r-code|code=<nowiki>> library(rga)</nowiki>}}
 
{{r-code|code=<nowiki>> library(rga)</nowiki>}}
  
Запрет верификации SSL-соединения (требуется только для ОС Windows, чтобы избежать ошибок при аутентификации):
+
Для предоставления доступа к данным Google Analytics API из пакета <code>rga</code> неободимо пройти процедуру авторизации. Для этого используется функция <code>rga.open</code>, которая принимает следующие аргументы:
  
{{r-code|code=<nowiki>> options(RCurlOptions = list(capath = system.file("CurlSSL", "cacert.pem", package = "RCurl"), ssl.verifypeer = FALSE))</nowiki>}}
+
* <code>instance</code> - имя переменной, которая будет содержать информацию о доступе к APi Google Analytics;
 +
* <code>where</code> - путь и/или имя файла, который будет использоваться для кэширования информации;
 +
* <code>client.id</code> - ID клиента;
 +
* <code>client.secret</code> - секретный ключ.
  
Для создания тоекна доступа потребуется переход в браузер, подтверждение доступа и копирование ключа в консоль. Опционально команда создает отдельный файл, который потом можно использовать для аутентификации без перехода в браузер<ref>Аргумент <code>where</code> с указанием пути и имени файла.</ref>.
+
Для получения токена доступа потребуется переход в браузер, подтверждение доступа и копирование код доступа в консоль. Опционально команда создает отдельный файл, который потом можно использовать для аутентификации без перехода в браузер<ref>Аргумент <code>where</code> с указанием пути и имени файла.</ref>.
  
 
{{r-code|code=<nowiki>> rga.open(instance = "ga", where = "ga.rga")</nowiki>}}
 
{{r-code|code=<nowiki>> rga.open(instance = "ga", where = "ga.rga")</nowiki>}}
Строка 114: Строка 151:
 
Видим, что в директории проекта появился файл <code>ga.rga</code><ref>Можно указать любой удобный путь и имя файла.</ref>. Теперь при повторном использовании этой команды будет осуществляться проверка наличия файла <code>ga.rga</code> в рабочей директории и, если такой файл будет найден, то данные для аутентификации будут взяты из данного файла.
 
Видим, что в директории проекта появился файл <code>ga.rga</code><ref>Можно указать любой удобный путь и имя файла.</ref>. Теперь при повторном использовании этой команды будет осуществляться проверка наличия файла <code>ga.rga</code> в рабочей директории и, если такой файл будет найден, то данные для аутентификации будут взяты из данного файла.
  
Второй вариант аутентификации с созданием собственного клиента API и ключей доступа:
+
Второй вариант аутентификации с использованием собственных ключей доступа:
  
# Необходимо создать проект на странице https://console.developers.google.com/project;
+
{{r-code|code=<nowiki>> rga.open(instance = "ga", client.id = "XXXXXX", client.secret = "XXXXXXX", where = "ga.rga")</nowiki>}}
# На вкладке APIs & auth на вкладке APIs надо активировать Analytics API, нажав на кнопку, где написано <code>OFF</code>.
+
# Во вкладке APIs & auth перейти во вкладку Credentials, где выбрать Create new Client ID;
+
# При создании Client ID выбрать APPLICATION TYPE: Installed application, INSTALLED APPLICATION TYPE: other, и нажать create;
+
# В результате будет Client ID = и Client secret = ;
+
# На вкладке Consent screen необходимо выбрать рабочий email и дать название приложению (Product name), сохранить;
+
  
Получаем токен доступа (откроется браузер, где надо будет выбрать свой почтовый аккаунт и подтвердить вход в API, тогда выдадут код, который надо будет вставить в консоль):
+
После выполнения данной команды будет открыт интернет браузер со страницей запроса подтверждения разрешения на доступ к данным Google Analytics. Необходимо авторизоваться под своей учётной записью Google и подтвердить разрешение на доступ к данным Google Analytics. Отметим, что пакет `RGA` запрашивает доступ '''только для чтения''' данных.
 
+
{{r-code|code=<nowiki>> rga.open(instance = "ga", client.id = "", client.secret = "", where = "api.rga")</nowiki>}}
+
 
+
Пояснения по значениям аргументов:
+
 
+
* <code>client.id</code> необходимо вставить сюда Client ID;
+
* <code>client.secret</code> необходимо вставить сюда Client secret.
+
  
 
После успешной аутентификации информацию о установленном подключении можно получить с помощью команды <code>ga$status()</code> или более подробную информацию <code>ga$show()</code>.
 
После успешной аутентификации информацию о установленном подключении можно получить с помощью команды <code>ga$status()</code> или более подробную информацию <code>ga$show()</code>.
Строка 136: Строка 161:
 
=== Получение данных ===
 
=== Получение данных ===
  
Получить информацию о классе <code>rga</code> можно с помощью функции <code>getRefClass()</code>:
+
Пакет <code>rga</code> позволяет получить доступ к различным API Google Analytics. Поскольку объекты, формируемые пакетом <code>rga</code>, относятся к классу <code>refClass</code>, что не является широко распространённой системой в данный момент, то ниже мы проведём небольшой обзор доступных функций и методов.
 +
 
 +
Получить общую информацию о классе <code>rga</code> можно с помощью функции <code>getRefClass()</code>:
  
 
{{r-code|code=<nowiki>> getRefClass(Class = "rga")
 
{{r-code|code=<nowiki>> getRefClass(Class = "rga")
Строка 215: Строка 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>;
Строка 227: Строка 254:
 
* <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:
Строка 237: Строка 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,
Строка 260: Строка 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 ...

Текущая версия на 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. Поддерживается как прямая, так и обратная сортировка

Ссылки

См. также