Импорт данных о расходах в Google Analytics с помощью R

Импорт данных о расходах в Google Analytics

При работе с Google Analytics очень часто необходимо импортировать какие-то данные в эту систему. Обычно этими данными являются данные о расходах в Facebook и других рекламных системах (хотя бывают и другие виды импорта). Такая необходимость возникает, как при настройке сквозной аналитики, так и в более общих случаях работы с Google Analytics.

Раньше мне на помощь приходил классный инструмент — OWOX BI PIPELINE. Инструмент очень удобный и к тому же, условно бесплатный, но в какой-то момент, когда появилась необходимость загружать исторические данные, за большой промежуток времени я встал перед выбором: использовать платную версию или же найти другое решение. Как вы уже догадались, раз читаете эту статью — я выбрал второе 🙂 Разбирать все будем на примере с Facebook, но работа с другими рекламными кабинетами очень схожа.

Итак, чтобы импортировать данные о расходах в Google Analytics нам понадобиться:

    1. Собрать необходимые данные с рекламного кабинета Facebook
    2. Создать в Google Analytics набор данных для импорта
    3. Преобразовать данные с рекламного кабинета в необходимый формат
    4. Настроить ежедневную автоматическую загрузку необходимых данных

ВАЖНО! Чтобы импорт работал корректно, рекламные кампании должны быть промечены UTM-метками.

Собираем необходимые данные с рекламного кабинета Facebook

Для сбора данных мы будем использовать пакет Алексея Селезнева rfacebookstat. Перед тем как перейти к загрузке данных нужно подготовиться и создать приложение в Facebook.

Создаем приложение в Facebook

Переходим в раздел Управление приложениями в меню Facebook и нажимаем на кнопку “Добавить новое приложение”. В открывшимся окне указываем Название приложения, электронную почту для связи и нажимаем кнопку “Создайте ID приложения”.

Стартовое окно создания приложения в Facebook

На следующем этапе добавляете продукт “Вход через Facebook” и нажимаете “Настроить”:

Добавление продукта - Вход через Facebook

Платформа в нашем случае — “Веб”:

Выбор платформы при создании приложения в Facebook - Веб

В настройках продукта в поле “Действительные URI перенаправления для OAuth” указываем “https://selesnow.github.io/rfacebookstat/getToken/get_token.html”:

Настройки продукта Вход через фейсбук для выгрузки данных

Переходим в основные настройки приложения и в поле “Домены приложений” указываем “github.com”. В полях “URL-адрес политики конфиденциальности” и “URL-адрес Пользовательского соглашения” указываем “https://github.com/selesnow/rfacebookstat”. Не забываем сохранить изменения.

Основные настройки приложения для работы с API с помощью R

На этом создание приложения закончено. Переходим ко второму пункту.

Получаем токен разработчика Facebook

В Facebook существует несколько видов токенов разработчиков:

  • краткосрочный — действует примерно 2 часа;
  • долгосрочный — действует 2 месяца.

Чтобы получить краткосрочный токен можно использовать функцию fbGetToken в пакете rfacebookstat.

Если вы используете этот пакет впервые, сначала введите команду ниже, для загрузки и запуска пакета:

#Устанавливаем пакеты devtools и rfacebookstat, если они не установлены

if(!"devtools" %in% installed.packages()[,1]){install.packages("devtools")}

devtools::install_github('selesnow/rfacebookstat')



#Подключаем библиотеку rfacebookstat

library(rfacebookstat)

Теперь можно и краткосрочный токен получить::

fbToken <- fbGetToken(app_id = XXXXXXXXXX)

где вместо XXXXXXXXXX нужно ввести идентификатор приложения, которое вы создали на предыдущем шаге:

Отображение Идентификатора приложения в Facebook

В открывшемся окне браузера кликаете на кнопку “Продолжить как …” и на следующем экране “ОК”. На последней странице вы увидите токен — примерно три строки символов:

Пример получения кратковременного токена для Facebook

Этот токен уже можно использовать для получения данных, но работать с ним постоянно не удобно, так как действует он всего 2 часа.
Чтобы получить долгосрочный токен воспользуемся командой fbGetLongTimeToken с пакета rfacebookstat:

longToken <- fbGetLongTimeToken(client_id = XXXXXXXXXX,
                                client_secret = "YYYYYYYYYYY",
                                fb_exchange_token = fbToken)

 

где вместо XXXXXXXXXX нужно ввести идентификатор приложения, вместо YYYYYYYYYYY секрет этого приложения, а вместо fbToken должно быть значение краткосрочного токена.

Отображение Идентификатора и Секрета приложения в Facebook

Теперь можно начать сбор данных.

Получаем необходимые данные с рекламного кабинета Facebook

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

Добавление рекламных аккаунтов для выгрузки данных с Facebook

Идентификатор можно найти на главной странице Бизнес Менеджера:

Отображение идентификатора рекламного аккаунта в бизнес менеджере Facebook

После предоставления разрешений, для получения необходимых данных необходимо запустить следующую команду в R:

start_date <- Sys.Date()-1

end_date <- Sys.Date()-1



fb <- fbGetMarketingStat(accounts_id = "act_DDDDDDDD",
                         api_version = "v3.1",
                         level = "ad",
                         fields = "campaign_name,adset_name,ad_name,impressions,clicks,spend",
                         date_start = start_date,
                         date_stop = end_date,
                         interval = "day",
                         access_token = longToken)

где вместо DDDDDDDD необходимо ввести идентификатор рекламного аккаунта.

По выполнению, вы получите необходимые данные о затратах, показах и кликах, в разрезе рекламных кампаний, групп объявлений и объявлений за вчера. Если необходимо получить данные за другой период, отредактируйте соответственно значения start_date и end_date.

Создаем в Google Analytics набор данных для импорта

Теперь нам нужно создать набор данных для импорта в интерфейсе Google Analytics. Для этого переходим на вкладку Администратор и на уровне ресурса выбираем пункт “Импорт данных”:

Импорт данных в Google Analytics

Далее необходимо создать набор для импорта типа “Данные о расходах”, указать название и выбрать представления, в которые будем импортировать данные, а также указать дополнительные настройки:

Создание набора данных типа Данные о расходах

Перейдя в только что созданный набор импорта и нажав на кнопку “Получить схему” вы увидеть как должны выглядеть ваши данные для импорта.

Получение схемы для импорта данных о затратах в Google Analytics

Если вы внимательны, то заметите, что наши данные с Facebook сейчас выглядят несколько иначе. Давайте же исправим это 😉

Как преобразовать данные с рекламного кабинета в необходимый для Google Analytics формат

Чтобы наши данные, полученные с API Facebook соответствовали схеме импорта запустите следующий код:

#Группируем данные полученные с API

grp <- group_by(fb, date_start, campaign_name, adset_name, ad_name)

fb <- summarise(grp, spend=sum(as.numeric(spend)), impressions=sum(as.numeric(impressions)), clicks=sum(as.numeric(clicks)))



#Создаем отдельные вектора на каждый из необходимых столбцов и преобразуем значения в необходимый нам формат

cost <- as.numeric(fb$spend)

clicks <- as.numeric(fb$clicks)

impressions <- as.numeric(fb$impressions)

date <- format(as.Date(fb$date_start), "%Y%m%d")

campaign <- fb$campaign_name

adGroup <- fb$adset_name

criteria <- fb$ad_name



#Создаем столбцы с полями source и medium, которых нет в изначальных данных

l <- length(date)

new <- vector(mode = "character", length = l)

u_medium <- replace(new, new == "", "ppc")

u_source <- replace(new, new == "", "facebook")



#Формируем таблицу в необходимом формате

fb_data <- data.frame(date, u_medium, u_source, cost, clicks, impressions, campaign, adGroup, criteria)



#Присваиваем столбцам названия согласно схеме данных импорта Google Analytics

col_names <- c("ga:date", "ga:medium", "ga:source", "ga:adCost", "ga:adClicks", "ga:impressions", "ga:campaign", "ga:adContent", "ga:keyword")

fb_data <- `colnames<-`(fb_data, col_names)

В итоге вы получите таблицу следующего вида:

Итоговая таблица с набором для импорта затрат с Facebook

О да, это то ,что нам нужно! Давайте загрузим эти данные в Google Analytics с помощью R.

Настраиваем ежедневную автоматическую загрузку необходимых данных с помощью R

Для того чтобы работать с данными Google Analytics при помощью API нам понадобиться получить токен разработчика или же создать сервисный аккаунт. Мы пойдем вторым путем.

Создаем сервисный аккаунт для работы с API Google Analytics

Переходим в Google Developers Console, выбираем пункт создать проект и вводим название. После этого переходим на вкладку “Библиотека” и в списке доступных API ищем Analytics API:

Поиск Analytics API Google Developers Console

Теперь необходимо включить доступ в Google Analytics по API:

Включение доступа в Google Analytics по API

Создаем ключ сервисного аккаунта в формате JSON. Сделать это можно на вкладке “Учетные данные”. Название можете задать любое:

 

Создание ключа сервисного аккаунта в формате JSON

Выбор типа ключа сервисного аккаунта

В следующем окне выбираем пункт “Создать аккаунт без роли”:

Создание сервисного аккаунта Google без роли

Теперь необходимо открыть сервисному аккаунту доступ в аналитику. Для этого переходим в созданный сервисный аккаунт и на указанную почту предоставляем доступ в Google Analytics на уровне ресурса с правами редактирования. Делается это обычным способом, как будто, почта принадлежит любому другому пользователю.

После этих манипуляций, мы можем начать работу с API Google Analytics.

Настроить ежедневную автоматическую загрузку данных

Для загрузки данных в Google Analytics мы будем использовать пакеты googleAuthR и googleAnalyticsR. Сам импорт можно выполнить с помощью запуска следующего кода:

 

#Устанавливаем пакеты googleAuthR и googleAnalyticsR, если они не установлены

if(!"googleAuthR" %in% installed.packages()[,1]){install.packages("googleAuthR")}

if(!"googleAnalyticsR" %in% installed.packages()[,1]){install.packages("googleAnalyticsR")}



#Подключаем необходимые библиотеки и вводим данные сервисного аккаунта в окружение

library(googleAuthR)

options(googleAuthR.client_id = "CLIENT_ID")

options(googleAuthR.client_secret = "CLIENT_SECRET")

library(googleAnalyticsR)



#Загружаем данные о затратах в Google Analytics

ga_custom_upload_file("ACCOUNT_ID", "SOURCE_ID", "IMPORT_ID", YOUR_DATA)

Предварительно в коде нужно заменить следующие данные:

  • CLIENT_ID — Электронный адрес сервисного аккаунта;
  • CLIENT_SECRET — Идентификатор ключа сервисного аккаунта;

Отображение Идентификатора и Секрета приложения в Facebook

  • ACCOUNT_ID — идентификатор аккаунта Google Analytics;
  • SOURCE_ID — Идентификатор ресурса Google Analytics;
  • IMPORT_ID — Идентификатор набора импорта данных;

Идентификатор набора данных для импорта затрат с Facebook

  • YOUR_DATA — набор данных, который вы хотите импортировать. В нашем случае он назывался fb_data.

После успешного выполнения скрипта вы увидите следующее сообщение в консоли R:

Информация об успешной загрузке данных о затратах в Google Analytics с помощью R

Соответствующая информация также отобразится в интерфейсе Google Analytics. В наборе данных импорта:

Информация об успешном импорте в наборе данных Google Analytics

И в отчете Анализ Расходов:

Импорт данных о расходах с Facebook в Google Analytics с помощью R

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

Мы разобрали на примере данных с Facebook, как импортировать данные о затратах в Google Analytics с помощью R, но данные способ подходит и для других рекламных систем, а также для импорта данных о затратах на такие источники, как SEO и E-mail.

 

А как вы импортируете исторические данные о затратах с различных рекламных систем в Google Analytics?