R:Google Analytics — различия между версиями
м (→Общее описание) |
м (→Общее описание) |
||
(не показаны 24 промежуточные версии 2 участников) | |||
Строка 5: | Строка 5: | ||
== Общее описание == | == Общее описание == | ||
− | На данный момент в официальном репозитории CRAN нет пакетов для работы с API Google Analytics | + | На данный момент, несмотря на все многообразие, в официальном репозитории 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= | + | ! 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" | | + | | style="text-align:center" | 1.06.2014<ref>Дата последней правки на данный момент, т.к. релизы данного пакета отсутствуют.</ref> |
− | | style="text-align:center" | | + | | 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> | + | | style="text-align:center" | <code>RCurl</code>, <code>httr</code>, <code>jsonlite</code>, <code>lubridate</code> |
− | | style="text-align:center" | <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= | + | ! 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= | + | ! 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" | + | ||
Строка 77: | Строка 89: | ||
|} | |} | ||
− | + | Помимо технических различий пакеты различаются еще рядом параметров, в частности методологией организации кода, документированностью функций, общей дружелюбностью и простотой в использовании пакета. | |
− | + | Так, пакет <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>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. | |
− | + | == Получение ключей для доступа к API Google Analytics == | |
− | + | Прежде чем приступить к работе с пакетами, предназначенными для работы с Google Analytics API, необходимо создать новое приложение в [https://console.developers.google.com Google Developers Console] и получить '''Client ID''' (идентификатор клиента) и '''Client secret''' (секретный ключ клиента) для доступа к API Google Analytics. Не смотря на то, что некоторые пакеты, например <code>rga</code>, предоставляют ключи доступа, сгенерированные автором пакета, мы всё же рекомендуем получить собственные ключи, т.к. сторонние ключи могут быть в любой момент отозваны автором. | |
− | + | ||
− | + | Пошаговая инструкция приведена ниже: | |
− | + | # Создание нового проекта (можно пропустить, если проект уже создан): | |
+ | #* Откройте страницу 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'''. | ||
− | + | Теперь вы в любой момент можете вернуться на страницу '''Credentials''' и узнать '''Client ID''' и '''Client secret'''. | |
− | + | == Пакет <code>rga</code> == | |
− | + | === Установка пакета === | |
− | + | Исходный код пакета <code>rga</code> располагается на [https://github.com github], поэтому установить его можно с помощью функции <code>install_github</code> из пакета {{r-package|devtools}}: | |
− | {{r-code|code=<nowiki>> | + | {{r-code|code=<nowiki>> devtools::install_github("rga", "skardhamar")</nowiki>}} |
− | + | === Авторизация === | |
− | + | Перед началом работы необходимо загрузить пакет <code>rga</code> (требуется только в начале работы при запуске новой R-сессии): | |
− | + | {{r-code|code=<nowiki>> library(rga)</nowiki>}} | |
− | + | Для предоставления доступа к данным Google Analytics API из пакета <code>rga</code> неободимо пройти процедуру авторизации. Для этого используется функция <code>rga.open</code>, которая принимает следующие аргументы: | |
− | + | * <code>instance</code> - имя переменной, которая будет содержать информацию о доступе к APi Google Analytics; | |
− | + | * <code>where</code> - путь и/или имя файла, который будет использоваться для кэширования информации; | |
− | + | * <code>client.id</code> - ID клиента; | |
− | + | * <code>client.secret</code> - секретный ключ. | |
− | + | ||
− | + | ||
− | + | Для получения токена доступа потребуется переход в браузер, подтверждение доступа и копирование код доступа в консоль. Опционально команда создает отдельный файл, который потом можно использовать для аутентификации без перехода в браузер<ref>Аргумент <code>where</code> с указанием пути и имени файла.</ref>. | |
− | {{r-code|code=<nowiki>> rga.open(instance = "ga | + | {{r-code|code=<nowiki>> rga.open(instance = "ga", where = "ga.rga")</nowiki>}} |
− | + | Видим, что в директории проекта появился файл <code>ga.rga</code><ref>Можно указать любой удобный путь и имя файла.</ref>. Теперь при повторном использовании этой команды будет осуществляться проверка наличия файла <code>ga.rga</code> в рабочей директории и, если такой файл будет найден, то данные для аутентификации будут взяты из данного файла. | |
− | + | Второй вариант аутентификации с использованием собственных ключей доступа: | |
− | + | ||
+ | {{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>getRefClass()</code>: | + | Получить общую информацию о классе <code>rga</code> можно с помощью функции <code>getRefClass()</code>: |
{{r-code|code=<nowiki>> getRefClass(Class = "rga") | {{r-code|code=<nowiki>> getRefClass(Class = "rga") | ||
Строка 167: | Строка 197: | ||
</nowiki>}} | </nowiki>}} | ||
− | Наиболее полезными являются: | + | Наиболее полезными являются: |
* <code>getAccounts</code> - получение списка аккаунтов в, к которым пользователь имеет доступ; | * <code>getAccounts</code> - получение списка аккаунтов в, к которым пользователь имеет доступ; | ||
Строка 182: | Строка 212: | ||
* <code>status</code> - получение краткой информации о статусе подключения к GA; | * <code>status</code> - получение краткой информации о статусе подключения к GA; | ||
− | Получить справку по тому или иному | + | Получить справку по тому или иному методу можно с помощью команды <code>rga$help(topic)</code>, где вместо <code>topic</code> нужно подставить название интересующего метода: |
{{r-code|code=<nowiki>> rga$help("getWebProperties") | {{r-code|code=<nowiki>> rga$help("getWebProperties") | ||
Строка 188: | Строка 218: | ||
$getWebProperties(accountId = , start = , max = ) | $getWebProperties(accountId = , start = , max = ) | ||
</nowiki>}} | </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>. Например: | ||
Строка 211: | Строка 242: | ||
Пояснения по значениям аргументов для метода <code>getData</code>: | Пояснения по значениям аргументов для метода <code>getData</code>: | ||
− | * <code>ids</code> - | + | * <code>ids</code> - ID профиля, из которого нужно выгрузить данные; |
− | * <code>start.date</code> - символьная строка, которая задаёт стартовое время в формате <code> | + | * <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> | + | * <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>; | ||
Строка 223: | Строка 254: | ||
* <code>walk = TRUE</code> - позволяет получить исходные, а не агрегированные данные. | * <code>walk = TRUE</code> - позволяет получить исходные, а не агрегированные данные. | ||
− | Аргументы <code>ids</code>, <code>start.date</code>, <code>end.date</code> и <code>metrics</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: | ||
Строка 233: | Строка 264: | ||
* по сегментам: https://developers.google.com/analytics/devguides/reporting/core/v3/segments | * по сегментам: https://developers.google.com/analytics/devguides/reporting/core/v3/segments | ||
− | Получить доступ к 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, | ||
Строка 256: | Строка 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 ... | ||
Строка 279: | Строка 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
|
Материал «R:Google Analytics», созданный авторами Филипп Управителев и Артём Клевцов, публикуется на условиях лицензии Creative Commons «Attribution» («Атрибуция») 4.0 Всемирная. | |
|
Перед использованием функций из пакетов их необходимо предварительно установить и загрузить: КодR <syntaxhighlight lang="r">> install.packages(pkgs = "pkgname") > library(package = "pkgname")</syntaxhighlight> |
Содержание
Общее описание
На данный момент, несмотря на все многообразие, в официальном репозитории 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
, предоставляют ключи доступа, сгенерированные автором пакета, мы всё же рекомендуем получить собственные ключи, т.к. сторонние ключи могут быть в любой момент отозваны автором.
Пошаговая инструкция приведена ниже:
- Создание нового проекта (можно пропустить, если проект уже создан):
- Откройте страницу 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.
Теперь вы в любой момент можете вернуться на страницу Credentials и узнать Client ID и Client secret.
Пакет rga
Установка пакета
Исходный код пакета rga
располагается на github, поэтому установить его можно с помощью функции install_github
из пакета devtools
:
<syntaxhighlight lang="r">> devtools::install_github("rga", "skardhamar")</syntaxhighlight>
Авторизация
Перед началом работы необходимо загрузить пакет rga
(требуется только в начале работы при запуске новой R-сессии):
<syntaxhighlight lang="r">> library(rga)</syntaxhighlight>
Для предоставления доступа к данным Google Analytics API из пакета rga
неободимо пройти процедуру авторизации. Для этого используется функция rga.open
, которая принимает следующие аргументы:
-
instance
- имя переменной, которая будет содержать информацию о доступе к APi Google Analytics; -
where
- путь и/или имя файла, который будет использоваться для кэширования информации; -
client.id
- ID клиента; -
client.secret
- секретный ключ.
Для получения токена доступа потребуется переход в браузер, подтверждение доступа и копирование код доступа в консоль. Опционально команда создает отдельный файл, который потом можно использовать для аутентификации без перехода в браузер[10].
<syntaxhighlight lang="r">> rga.open(instance = "ga", where = "ga.rga")</syntaxhighlight>
Видим, что в директории проекта появился файл ga.rga
[11]. Теперь при повторном использовании этой команды будет осуществляться проверка наличия файла ga.rga
в рабочей директории и, если такой файл будет найден, то данные для аутентификации будут взяты из данного файла.
Второй вариант аутентификации с использованием собственных ключей доступа:
<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()
:
<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()
:
<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
нужно подставить название интересующего метода:
<syntaxhighlight lang="r">> rga$help("getWebProperties") Call: $getWebProperties(accountId = , start = , max = ) </syntaxhighlight>
Вызов метода осуществляется аналогично доступу к элементам списка посредством оператора $
. После создания объекта с помощью функции rga.open()
к методам можно обратиться с помощью конструкции object$methodName()
, где object
- имя, которое было указано в качестве аргумента instance
при вызове функции rga.open()
, а methodName()
- один из вышеперечисленных методов.
Узнать какие аргументы, а также их значения по умолчанию, можно передать тому или иному методу можно узнать с помощью функции args
. Например:
<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 многоканальных последовательностей.
Получения данных базовых отчётов:
<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 отчётов: https://developers.google.com/analytics/devguides/reporting/core/v3/reference
- по параметрам запроса к API многоканальных последовательностей: https://developers.google.com/analytics/devguides/reporting/mcf/v3/reference
- по метрикам и измерениям базовых отчётов: https://developers.google.com/analytics/devguides/reporting/core/dimsmets
- по метрикам и измерениям многоканальных последовательностей: https://developers.google.com/analytics/devguides/reporting/mcf/dimsmets/
- по сегментам: https://developers.google.com/analytics/devguides/reporting/core/v3/segments
Получить доступ к API Google Analytics можно также с помощью веб-сервисов Google по следующей ссылке: https://developers.google.com/apis-explorer/?hl=ru#p/analytics/v3/. Для получения данных необходимо авторизоваться и задать требуемые параметры для запроса к API.
Пример сбора данных по выбранным метрикам и измерениям приведён ниже.
<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):
<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>
Структура таблицы имеют следующий вид:
<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>
Примечания
- ↑ Пакеты
rga
,ganalytics
иRGA
в ближайшее время могут появиться и в CRAN, работы в этом направлении уже ведутся. - ↑ В апреле 2014 были внесены значительные изменения в код проекта, но после их внесения стабильного выпуска пока нет.
- ↑ Дата последней правки на данный момент, т.к. релизы данного пакета отсутствуют.
- ↑ Дата последней правки на данный момент, т.к. релизы данного пакета отсутствуют.
- ↑ Дата последней правки на данный момент, т.к. релизы данного пакета отсутствуют.
- ↑ Авторизация по Client ID и Client secret, полученным в API Console.
- ↑ Информация по аккаунтам, профилям, представлениям, сегментам и целям.
- ↑ Pagination - получение данных, превышающих ограничения Google (1000 на один запрос) путем организации нескольких запросов.
- ↑ Получить обобщённое представление об принципах и реализации ООП в R можно здесь
- ↑ Аргумент
where
с указанием пути и имени файла. - ↑ Можно указать любой удобный путь и имя файла.
- ↑ Можно указать
accountId
(по умолчанию будет выведена информацию по всем аккаунтам). - ↑ Можно указать
accountId
(по умолчанию будет выведена информацию по всем аккаунтам). - ↑ Отличием является содержание показателей и измерений.
- ↑ Получить начальную дату сбора статистики в GA можно с помощью команды
ga$getFirstDate(id)
. - ↑ В данном случае используется функция
Sys.Date()
, которая выводит текущую дату. - ↑ Можно использовать не больше 10 метрик одновременно.
- ↑ Можно использовать не больше 7 измерений одновременно.
- ↑ Поддерживается как прямая, так и обратная сортировка
Ссылки
- R Google Analytics: An easy API connector to Google Analytics in R - http://skardhamar.github.io/rga/
- r-google-analytics: Google Analytics For The R Statistical Programming Language - https://code.google.com/p/r-google-analytics/
- Google Analytics: Dimensions & Metrics Reference - https://developers.google.com/analytics/devguides/reporting/core/dimsmets
- Google Analytics Query Explorer 2 - https://ga-dev-tools.appspot.com/explorer/?csw=1
- Google Analytics: Core Reporting API - Segments - https://developers.google.com/analytics/devguides/reporting/core/v3/segments
- Google Analytics Core Reporting API Changelog: https://developers.google.com/analytics/devguides/reporting/core/v3/changelog