R:Google Analytics


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

На данный момент, несмотря на все многообразие, в официальном репозитории 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. Поддерживается как прямая, так и обратная сортировка

Ссылки

См. также