При работе с Google Analytics очень часто необходимо импортировать какие-то данные в эту систему. Обычно этими данными являются данные о расходах в Facebook и других рекламных системах (хотя бывают и другие виды импорта). Такая необходимость возникает, как при настройке сквозной аналитики, так и в более общих случаях работы с Google Analytics.
Раньше мне на помощь приходил классный инструмент — OWOX BI PIPELINE. Инструмент очень удобный и к тому же, условно бесплатный, но в какой-то момент, когда появилась необходимость загружать исторические данные, за большой промежуток времени я встал перед выбором: использовать платную версию или же найти другое решение. Как вы уже догадались, раз читаете эту статью — я выбрал второе 🙂 Разбирать все будем на примере с Facebook, но работа с другими рекламными кабинетами очень схожа.
Итак, чтобы импортировать данные о расходах в Google Analytics нам понадобиться:
ВАЖНО! Чтобы импорт работал корректно, рекламные кампании должны быть промечены UTM-метками.
Собираем необходимые данные с рекламного кабинета Facebook
Для сбора данных мы будем использовать пакет Алексея Селезнева rfacebookstat. Перед тем как перейти к загрузке данных нужно подготовиться и создать приложение в Facebook.
Создаем приложение в Facebook
Переходим в раздел Управление приложениями в меню Facebook и нажимаем на кнопку “Добавить новое приложение”. В открывшимся окне указываем Название приложения, электронную почту для связи и нажимаем кнопку “Создайте ID приложения”.
На следующем этапе добавляете продукт “Вход через Facebook” и нажимаете “Настроить”:
Платформа в нашем случае — “Веб”:
В настройках продукта в поле “Действительные URI перенаправления для OAuth” указываем “https://selesnow.github.io/rfacebookstat/getToken/get_token.html”:
Переходим в основные настройки приложения и в поле “Домены приложений” указываем “github.com”. В полях “URL-адрес политики конфиденциальности” и “URL-адрес Пользовательского соглашения” указываем “https://github.com/selesnow/rfacebookstat”. Не забываем сохранить изменения.
На этом создание приложения закончено. Переходим ко второму пункту.
Получаем токен разработчика 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 нужно ввести идентификатор приложения, которое вы создали на предыдущем шаге:
В открывшемся окне браузера кликаете на кнопку “Продолжить как …” и на следующем экране “ОК”. На последней странице вы увидите токен — примерно три строки символов:
Этот токен уже можно использовать для получения данных, но работать с ним постоянно не удобно, так как действует он всего 2 часа.
Чтобы получить долгосрочный токен воспользуемся командой fbGetLongTimeToken с пакета rfacebookstat:
longToken <- fbGetLongTimeToken(client_id = XXXXXXXXXX, client_secret = "YYYYYYYYYYY", fb_exchange_token = fbToken)
где вместо XXXXXXXXXX нужно ввести идентификатор приложения, вместо YYYYYYYYYYY секрет этого приложения, а вместо fbToken должно быть значение краткосрочного токена.
Теперь можно начать сбор данных.
Получаем необходимые данные с рекламного кабинета 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. Для этого переходим на вкладку Администратор и на уровне ресурса выбираем пункт “Импорт данных”:
Далее необходимо создать набор для импорта типа “Данные о расходах”, указать название и выбрать представления, в которые будем импортировать данные, а также указать дополнительные настройки:
Перейдя в только что созданный набор импорта и нажав на кнопку “Получить схему” вы увидеть как должны выглядеть ваши данные для импорта.
Если вы внимательны, то заметите, что наши данные с 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)
В итоге вы получите таблицу следующего вида:
О да, это то ,что нам нужно! Давайте загрузим эти данные в Google Analytics с помощью R.
Настраиваем ежедневную автоматическую загрузку необходимых данных с помощью R
Для того чтобы работать с данными Google Analytics при помощью API нам понадобиться получить токен разработчика или же создать сервисный аккаунт. Мы пойдем вторым путем.
Создаем сервисный аккаунт для работы с API Google Analytics
Переходим в Google Developers Console, выбираем пункт создать проект и вводим название. После этого переходим на вкладку “Библиотека” и в списке доступных API ищем Analytics API:
Теперь необходимо включить доступ в Google Analytics по API:
Создаем ключ сервисного аккаунта в формате JSON. Сделать это можно на вкладке “Учетные данные”. Название можете задать любое:
В следующем окне выбираем пункт “Создать аккаунт без роли”:
Теперь необходимо открыть сервисному аккаунту доступ в аналитику. Для этого переходим в созданный сервисный аккаунт и на указанную почту предоставляем доступ в 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 — Идентификатор ключа сервисного аккаунта;
- ACCOUNT_ID — идентификатор аккаунта Google Analytics;
- SOURCE_ID — Идентификатор ресурса Google Analytics;
- IMPORT_ID — Идентификатор набора импорта данных;
- YOUR_DATA — набор данных, который вы хотите импортировать. В нашем случае он назывался fb_data.
После успешного выполнения скрипта вы увидите следующее сообщение в консоли R:
Соответствующая информация также отобразится в интерфейсе Google Analytics. В наборе данных импорта:
И в отчете Анализ Расходов:
Так как статья получилась не маленькой, информацию о том, как запланировать автоматическое выполнение скрипта читайте в предыдущей статье этого блога.
Мы разобрали на примере данных с Facebook, как импортировать данные о затратах в Google Analytics с помощью R, но данные способ подходит и для других рекламных систем, а также для импорта данных о затратах на такие источники, как SEO и E-mail.
А как вы импортируете исторические данные о затратах с различных рекламных систем в Google Analytics?