Блог про интернет-маркетинг для бизнеса

Аналитика

Как загрузить статистику рекламных кампаний из API Facebook с помощью языка R

471
0
6
43

Популярность Facebook как рекламной площадки стремительно растет, но анализировать статистику в рекламном кабинете неудобно. Один из альтернативных способов — загрузить статистику в R и визуализировать ее. В этой статье я подробно расскажу, как получить данные из API Facebook и работать с ними в R.

R — язык программирования для статистической обработки данных и работы с графикой, а также свободная программная среда вычислений с открытым исходным кодом в рамках проекта GNU. Пользователи ежедневно выкладывают в свободный доступ новые полезные пакеты, поэтому библиотека пакетов R богатая и значительно расширяет базовые возможности языка.

Я написал ряд функций для работы с API Facebook и их собрал в пакет rfacebookstat, доступный в свободном доступе на GitHub.

1. Создайте приложение в Facebook

1.1. Чтобы начать работу с API Facebook, нужно добавить новое приложение. Для этого перейдите в левое меню и в разделе «Разработчик» выберите команду «Управление приложениями».

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

1.2. В кабинете разработчика нажмите кнопку «+ Добавить новое приложение».

Добавить новое приложение

Заполните поля «Отображаемое название приложения»,«Эл. адрес для связи», «Категория» и нажмите «Создайте ID приложения».

1.3. Далее вы попадете в меню «Установка и настройка продукта». Кликните на кнопку «Начать» напротив пункта «Вход через Facebook».

Установка и настройка продукта

1.4. Перейдите в настройки приложения. Во вкладке «Основное» находится информация по ID и секрету приложения, которая понадобится для работы с API.

Настройки приложения Facebook

На этой вкладке также заполните поля:

  • «Отображаемое название»;
  • «Домены приложений»;
  • «Эл. адрес для связи»;
  • «URL-адрес политики конфиденциальности»;
  • «URL-адрес Пользовательского соглашения».

Можно указать произвольное название приложение, а остальные поля заполнить как на примере ниже.

Указать произвольное название приложение

1.5. В нижней части окна нажмите «Добавить платформу».

Добавить платформу

Из списка предложенных платформ выберите веб-сайт.

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

В поле «URL-адрес сайта» введите «https://github.com/selesnow/rfacebookstat» и нажмите «Сохранить изменения».

В поле «URL-адрес сайта»

1.6. В меню приложения перейдите в раздел «Вход через Facebook». В поле «Действительные URL-адреса для перенаправления OAuth» введите «https://www.facebook.com/connect/login_success.html».

Действительные URL-адреса для перенаправления OAuth

1.7. Далее нужно выбрать, из каких рекламных аккаунтов вы будете получать статистику через API и скопировать их ID.

Чтобы получить ID аккаунта, перейдите в рекламный кабинет и скопируйте цифры из параметра act в URL.

 ID рекламного аккаунта Facebook

Перейдите в раздел «Настройки» —> «Дополнительно» и в блоке «Рекламные аккаунты» нажмите кнопку «API Ads».

Нажмите кнопку «API Ads»

В открывшемся окне введите ID выбранных рекламных аккаунтов.

ID выбранных рекламных аккаунтов

На данном этапе вы получили уровень доступа к API «Development» и можете работать максимум с пятью рекламными аккаунтами.

Если вам понадобится полный доступ к API, подробная инструкция находится здесь.

2. Установите пакет rfacebookstat

Пакет rfacebookstat доступен в свободном доступе в репозитории GitHub.

2.1. Для установки пакетов с GitHub предварительно установите пакет devtools с помощью стандартной команды install.packages.

install.packages("devtools")

2.2. Подключите пакет devtools и установите его с помощью пакет rfacebookstat.

library(devtools)
install_github('selesnow/rfacebookstat')
library(rfacebookstat)

3. Получите токен для работы с API Facebook

Для начала работы с API Facebook осталось получить токен доступа. Для этого воспользуйтесь функцией fbGetToken в пакете rfacebookstat.

3.1. На вкладке «Настройки» —> «Основное» получите ID вашего приложения и введите его в примере ниже вместо 00000000000000.

token <- fbGetToken(app_id = 00000000000000)

3.2. Возможно, впервые получая токен, вы попадете на страницу с предупреждением, что некоторые разрешения еще не одобрены для использования Facebook. Пропустите это предупреждение с помощью кнопки «Продолжить как, ...».

вы попадете на страницу с предупреждением

Подтвердите вход через Facebook.

Подтвердите вход

3.3. Далее скопируйте сгенерированный токен для доступа к API. Он появится в адресной строке вашего браузера в параметре access_token.

Сгенерированный токен для доступа к API

Вставьте токен в консоль R в качестве ответа на запрос «Enter your token».

Вставьте токен в консоль R

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

3.4. Подставьте ваш ClientID и секрет приложения, а также объект, в который сохранили полученный токена. В приведенном примере я создавал объект token.

longtime_token <- fbGetLongTimeToken(
                                                                client_id = 00000000000000,
                                                                client_secret = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
                                                                fb_exchange_token = token)

Долгосрочный токен будет действителен на протяжение двух месяцев.

4. Получите статистику по рекламным аккаунтам в Facebook

Мы завершили подготовительный этап и можем перейти непосредственно к импорту данных.

Основная функция пакета rfacebookstat — fbGetMarketingStat. Рассмотрим подробнее работу с этой функцией, потому что с ее помощью можно получить любые данные о рекламном аккаунте.

4.1. Синтаксис

stat <- fbGetMarketingStat(accounts_id = "act_0000000000",
                                          sorting = NULL,
                                          level = "account",
                                          breakdowns = NULL,
                                            fields = "account_id,account_name,campaign_name,impressions,unique_impressions,clicks,unique_clicks,reach,spend",
                                           filtering = NULL,
                                           date_start = Sys.Date() — 30,
                                           date_stop = Sys.Date(),
                                           api_version = "v2.8",
                                           access_token = NULL)

4.2. Аргументы функции

4.2.1. accounts_idID рекламного аккаунта. Это обязательный аргумент. Вы можете получить его из URL, если перейдете в нужный рекламный аккаунт Facebook.

accounts_id

Указывайте ID аккаунта с приставкой «act_», как в примере: accounts_id = "act_000000000000".

4.2.2. sorting — cортировка данных. Необязательный аргумент. На входе принимает список полей и направление сортировки (по возрастанию или по убыванию). Пример: reach_descending, impressions_ascending.

4.2.3. level — уровень детализации данных. Обязательный аргумент. Принимает значения ad, adset, campaign, account. Пример — level = "account".

4.2.4. fields — список полей, по которым вы планируете получить данные. Обязательный аргумент. Пример: fields = "account_id,account_name,campaign_name,impressions,unique_impressions,clicks,unique_clicks,reach,spend".

Список доступных полей в версии API 2.8. смотрите в таблице ниже или официальной документации.

Показать таблицу

Поле

Описание

account_id

numeric string

Идентификатор рекламного аккаунта, с которым связана ваша рекламная деятельность. Рекламный аккаунт включает кампании, объявления и биллинг.

По умолчанию

account_name

string

Имя рекламного аккаунта, в котором сосредоточена ваша рекламная деятельность. Ваш рекламный аккаунт содержит кампании, объявления и биллинг.

action_values

list<AdsActionStats>

Общая стоимость всех конверсий в результате просмотра рекламы.

actions

list<AdsActionStats>

Общее количество действий, которые люди выполняют после просмотра рекламы. Действия могут включать вовлеченность, клики или конверсии.

ad_id

numeric string

Уникальный идентификатор объявления, который вы видите в отчете.

По умолчанию

ad_name

string

Уникальный ID объявления, который вы видите в отчете.

adset_id

numeric string

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

По умолчанию

adset_name

string

Название группы объявлений, которое вы видите в отчете.

app_store_clicks

numeric string

Количество кликов по ссылкам на магазин приложений в вашей рекламе.

buying_type

string

Способы оплаты, таргетинга и измерения результатов рекламы в кампаниях: динамические ставки, фиксированные ставки или покупка охвата и частоты.

call_to_action_clicks

numeric string

Метрика указывает, сколько раз люди нажали кнопку с призывом к действию в рекламе.

campaign_id

numeric string

Уникальный ID рекламной кампании, который вы видите в отчете. Кампания включает группы объявлений и отдельные рекламные объявления.

По умолчанию

campaign_name

string

Название рекламной кампании в отчетах. Кампания включает группы объявлений и отдельные рекламные объявления.

canvas_avg_view_percent

numeric string

Среднее число просмотров Холста (в процентах). Холст — это экран, который открывается на мобильном устройстве после того, как человек нажимает ссылку Холста в вашей рекламе. Он может включать интерактивные или мультимедийные компоненты, такие как видео, изображения, каталоги продуктов и так далее.

canvas_avg_view_time

numeric string

Среднее время (в секундах), в течение которого люди просматривали Холст Facebook. Холст — это экран, который открывается на мобильном устройстве после того, как человек нажимает ссылку Холста в вашей рекламе. Он может включать интерактивные или мультимедийные компоненты, такие как видео, изображения, каталоги продуктов и так далее.

clicks

numeric string

Общее число нажатий вашего объявления. В это число могут входить сторонние клики на веб-сайт, отметки «Нравится» Страницы, комментарии к публикациям, ответы на приглашения или установки приложения

cost_per_10_sec_video_view

list<AdsActionStats>

Средняя цена за каждый 10-секундный просмотр видео.

cost_per_action_type

list<AdsActionStats>

Средняя цена за актуальное действие.

cost_per_estimated_ad_recallers

numeric string

Средняя цена за приблизительный прирост запоминаемости рекламы на человека.

cost_per_inline_link_click

numeric string

Средняя стоимость клика по каждой встроенной ссылке.

cost_per_inline_post_engagement

numeric string

Средняя стоимость вовлеченности для каждой встроенной публикации.

cost_per_total_action

numeric string

Средняя цена за актуальное действие.

cost_per_unique_action_type

list<AdsActionStats>

Средняя цена каждого уникального действия.

cost_per_unique_click

numeric string

Средняя цена за каждый уникальный клик по ссылке (все), полученный в результате вашей рекламы.

cost_per_unique_inline_link_click

numeric string

Средняя цена каждого уникального клика по встроенной ссылке.

cpc

numeric string

Средняя цена за каждый клик в результате просмотра вашей рекламы.

cpm

numeric string

Средняя цена за 1 000 показов.

cpp

numeric string

Средняя стоимость охвата 1 000 пользователей.

ctr

numeric string

Кликабельность для всех кликов. Общее количество полученных кликов (например, сторонние клики, отметки «Нравится», ответы на приглашения), деленное на количество показов.

date_start

string

Дата начала учета ваших данных. Эта метрика основана на диапазоне данных, который вы выбрали для своего представления отчетности.

По умолчанию

date_stop

string

Дата окончания учета ваших данных. Эта метрика основана на диапазоне данных, который вы выбрали для своего представления отчетности.

По умолчанию

deeplink_clicks

numeric string

Количество кликов по ссылкам на определенные части приложения.

estimated_ad_recall_rate

numeric string

Доля участников опроса (в процентах), которые вспомнили вашу рекламу в течение двух дней после просмотра.

estimated_ad_recallers

numeric string

Примерное количество людей, которые через два дня после просмотра могут вспомнить вашу рекламу, если их о ней спросят. Эта метрика показывает результативность рекламы с целями «Узнаваемость бренда», «Просмотры видео» и «Вовлеченность для публикации Страницы».

frequency

numeric string

Среднее количество просмотров рекламы каждым человеком.

impressions

numeric string

Количество просмотров рекламы.

По умолчанию

inline_link_click_ctr

numeric string

Процентное отношение просмотров вашей рекламы к кликам по встроенной ссылке.

inline_link_clicks

numeric string

Количество кликов по ссылкам на выбранные адреса, входящие или не входящие в состав объектов монетизации Facebook. Для кликов по встроенным ссылкам используется фиксированное окно атрибуции «1 день после клика».

inline_post_engagement

numeric string

Общее количество действий, выполненных людьми с вашей рекламой (или, в некоторых случаях, все публикации). Для вовлеченности от встроенных публикаций используется фиксированное окно атрибуции «один день после клика».

newsfeed_avg_position

numeric string

Средняя позиция, где ваша реклама была вставлена в ленты новостей на мобильных устройствах и ПК. Первая позиция находится наверху ленты новостей.

newsfeed_clicks

numeric string

Общее количество кликов на вашу рекламу в лентах новостей пользователей на мобильных устройствах и ПК.

newsfeed_impressions

numeric string

Общее количество вставок вашей рекламы в ленты новостей пользователей на мобильных устройствах и ПК.

objective

string

Цель, которую вы выбрали для кампании. Цель отражает, чего вы хотите добиться с помощью рекламы.

reach

numeric string

Количество людей, которые хотя бы раз увидели вашу рекламу. Отличие охвата от показов заключается в том, что последние могут включать просмотры рекламы одним и тем же человеком.

relevance_score

AdgroupRelevanceScore

Оценка от 1 до 10, обозначающая уровень реагирования целевой аудитории на вашу рекламу. Данный показатель отображается после 500 показов и только для объявлений (не отображается для групп объявлений и кампаний).

social_clicks

numeric string

Количество всех кликов, полученных рекламой (например, отметки «Нравится», ответы на приглашения, клики с других сайтов) при отображении с социальной информацией (например, Алине Ивановой это нравится).

social_impressions

numeric string

Количество просмотров вашей рекламы с упоминанием того, что кто-то из друзей на Facebook взаимодействовал с вашей Страницей Facebook или рекламой.

social_reach

numeric string

Количество людей, которые увидели вашу рекламу с упоминанием того, что один из их друзей на Facebook взаимодействовал с вашей Страницей Facebook или рекламой.

social_spend

numeric string

Общая сумма, которую вы уже потратили на свою рекламу, которая дополняется социальной информацией (например, Петру Соколову это нравится).

spend

numeric string

Общая сумма, которую вы потратили на кампанию, группу объявлений или рекламу в период показа.

По умолчанию

total_action_value

numeric string

Общая стоимость всех конверсий в результате просмотра рекламы.

total_actions

numeric string

Общее количество действий, которые люди выполняют после просмотра рекламы. Действия могут включать вовлеченность, клики или конверсии.

total_unique_actions

numeric string

Количество людей, которые выполнили действие после просмотра рекламы.

unique_actions

list<AdsActionStats>

Количество людей, которые выполнили действие после просмотра рекламы.

unique_clicks

numeric string

Общее количество уникальных пользователей, нажавших на ссылку вашего рекламного объявления. Например, если три человека нажали одно и то же объявление пять раз, число уникальных кликов — три.

unique_ctr

numeric string

Уникальная кликабельность для всех кликов. Количество людей, нажавших рекламу в любом месте, разделенное на количество охваченных людей. Например, вы получили 20 уникальных кликов, а реклама была показана 1 000 уникальным пользователям. Значит, соотношение кликов к показам составляет 2%.

unique_impressions

numeric string

Количество людей, видевших рекламу как минимум раз.

unique_inline_link_click_ctr

numeric string

Отношение количества просмотров рекламы к кликам по ссылке. Для кликабельности встроенных элементов используется фиксированное окно атрибуции «1 день после клика».

unique_inline_link_clicks

numeric string

Количество человек, выполнивших клик по встроенной ссылке.

unique_link_clicks_ctr

numeric string

Доля людей, которые посмотрели вашу рекламу и нажали ссылку.

unique_social_clicks

numeric string

Количество людей, которые нажали эту рекламу (например, отметки «Нравится», ответы на приглашения, клики с других сайтов), пока она отображалась с социальной информацией (например, Алине Ивановой это нравится).

unique_social_impressions

numeric string

Количество людей, которым было показано объявление в контекстной рекламе.

video_10_sec_watched_actions

list<AdsActionStats>

Количество просмотров видео в течение как минимум 10 секунд или почти полностью (в зависимости от того, что произошло раньше).

video_15_sec_watched_actions

list<AdsActionStats>

Количество просмотров вашего видео в течение как минимум 15 секунд или почти полностью в зависимости от того, что наступило раньше.

video_30_sec_watched_actions

list<AdsActionStats>

Количество просмотров вашего видео в течение как минимум 30 секунд или почти полностью в зависимости от того, что наступило раньше.

video_avg_pct_watched_actions

list<AdsActionStats>

(Использование данной метрики будет скоро прекращено, используйте video_avg_percent_watched_actions). Это общее время просмотра видео, разделенное на количество просмотров видео в течение всей его продолжительности. Метрика недоступна для прямых эфиров.

video_avg_percent_watched_actions

list<AdsActionStats>

Среднее время просмотра видео (в процентах).

video_avg_sec_watched_actions

list<AdsActionStats>

(Использование данной метрики будет скоро прекращено, используйте video_avg_time_watched_actions). Это общее время просмотра видео, разделенное на общее количество просмотров видео.

video_avg_time_watched_actions

list<AdsActionStats>

Среднее время, в течение которого люди смотрели видео.

video_complete_watched_actions

list<AdsActionStats>

Количество просмотров видео в течение как минимум 30 секунд или почти полностью (в зависимости от того, что произошло раньше).

video_p100_watched_actions

list<AdsActionStats>

Количество раз, когда ваше видео было просмотрено в точке 100%, включая просмотры, когда человек прокрутил видео до этого момента.

video_p25_watched_actions

list<AdsActionStats>

Количество раз, когда ваше видео было просмотрено в точке 25%, включая просмотры, когда человек прокрутил видео до этого момента.

video_p50_watched_actions

list<AdsActionStats>

Количество раз, когда ваше видео было просмотрено в точке 50%, включая просмотры, когда человек прокрутил видео до этого момента.

video_p75_watched_actions

list<AdsActionStats>

Количество раз, когда ваше видео было просмотрено в точке 75%, включая просмотры, когда человек прокрутил видео до этого момента.

video_p95_watched_actions

list<AdsActionStats>

Количество раз, когда ваше видео было просмотрено в точке 95%, включая просмотры, когда человек прокрутил видео до этого момента.

website_clicks

numeric string

Количество кликов по ссылкам на сайт в вашей рекламе.

website_ctr

list<AdsActionStats>

Процентное отношение просмотров вашей рекламы к кликам по сайту.

4.2.5. breakdowns — аргумент, с помощью которого можно получить данные в разбивке на различные сегменты. Можно разбивать информацию по следующим срезам:

  • age;
  • country;
  • gender;
  • frequency_value;
  • hourly_stats_aggregated_by_advertiser_time_zone;
  • hourly_stats_aggregated_by_audience_time_zone;
  • impression_device;
  • place_page_id;
  • placement;
  • device_platform;
  • product_id;
  • region;
  • actions;
  • publisher_platform;
  • platform_position;
  • impression_device.

В одном запросе можно комбинировать несколько срезов. На данный момент доступны следующие комбинации:

Поля, отмеченные звездочкой «*», могут запрашиваться вместе с action_type, action_target_id и action_destination.

  • action_type *;
  • action_target_id *;
  • action_device *;
  • action_device, placement *;
  • action_device, placement, impression_device *;
  • action_device, publisher_platform *;
  • action_device, publisher_platform, impression_device *;
  • action_device, publisher_platform, platform_position *;
  • action_device, publisher_platform, platform_position, impression_device *;
  • action_reaction;
  • action_type, action_reaction;
  • age *;
  • gender *;
  • age, gender *;
  • country *;
  • region *;
  • placement *;
  • placement, impression_device *;
  • publisher_platform *;
  • publisher_platform, impression_device *;
  • publisher_platform, platform_position *;
  • publisher_platform, platform_position, impression_device *;
  • product_id *;
  • hourly_stats_aggregated_by_advertiser_time_zone *;
  • hourly_stats_aggregated_by_audience_time_zone *;
  • action_carousel_card_id / action_carousel_card_name;
  • action_carousel_card_id / action_carousel_card_name, placement;
  • action_carousel_card_id / action_carousel_card_name, placement, impression_device;
  • action_carousel_card_id / action_carousel_card_name, country;
  • action_carousel_card_id / action_carousel_card_name, age;
  • action_carousel_card_id / action_carousel_card_name, gender;
  • action_carousel_card_id / action_carousel_card_name, age, gender.

Пример: breakdowns = "region"

4.2.6. filtering — фильтр данных. Необязательный аргумент. Фильтры задаются в виде JSON объектов «ключ:значение». Необходимо прописать три свойства:

  • field — поле, по которому будет осуществляться фильтрация;
  • operator — оператор логического значения ('EQUAL', 'NOT_EQUAL', 'GREATER_THAN', 'GREATER_THAN_OR_EQUAL', 'LESS_THAN', 'LESS_THAN_OR_EQUAL', 'IN_RANGE', 'NOT_IN_RANGE', 'CONTAIN', 'NOT_CONTAIN', 'IN', 'NOT_IN', 'ANY', 'ALL', 'NONE');
  • value — значения, по которому будет фильтроваться указанное поле.

Пример: filtering = "[{'field':'publisher_platform','operator':'IN','value':['instagram']}]

4.2.7. date_start — начальная дата отчетного периода в формате YYYY-MM-DDD.

4.2.8. date_stop — конечная дата отчетного периода в формате YYYY-MM-DDD.

4.2.9. api_version — версия API Facebook.

4.2.10. access_token — токен доступа.

5. Примеры использования функции fbGetMarketingStat

5.1. Перед тем как запускать описанные ниже примеры, сгенерируйте API-токен и сохраните его в объект token.

token <- fbGetToken(app_id = 00000000000000)

5.2. Чтобы получить статистику о количестве показов, кликов и затрат на рекламу на уровне аккаунта и в  разрезе регионов, введите следующий код:

AccStat <- fbGetMarketingStat( accounts_id = «act_0000000000»,
                                                       level = "account",
                                                       fields = "account_id,account_name,impressions,clicks,spend",
                                                       breakdowns = "region",
                                                       date_start = "2016-11-01",
                                                       date_stop = "2016-11-30",
                                                       api_version = "v2.8",
                                                       access_token = token)

5.3. Получите статистику по количеству уникальных показов и уникальных кликов, с фильтром по возрастным группам «18-24», «25-34» и сортировкой данных в порядке убывания количества уникальных показов (поле unique_impressions).

CampStat <-     fbGetMarketingStat(accounts_id = "act_0000000000",
                          level = "campaign",
                          fields = "campaign_name,unique_impressions,unique_clicks",
                          breakdowns = "age",
                          sorting = "unique_impressions_descending",
                          filtering = "[{'field':'age','operator':'IN','value':['18-24','25-34']}]",
                          date_start = "2016-10-01",
                          date_stop = "2016-10-10",
                          api_version = "v2.8",
                          access_token = token)

6. Выводы

Используя API Facebook и пакет функций на языке R rfacebookstat, вы сможете:

  • получить данные по своим рекламным аккаунтам, кампаниям, объявлениям и так далее во множестве различных разрезов.
  • строить на основе полученных данных любые визуализации, используя всю мощь языка R.
  • передавать полученные данные в любую базу данных или сохранять в виде CSV-файла.

Читайте также, как настроить запуск скриптов R с определенным интервалом.

Комментарии (43)

  1. 0
    26 дней назад

    Здравствуйте Алексей. Спасибо за статью. Только осваиваю R studio.Подскажите пожалуйста. Как получать данные о конверсиях? 

    Т.е на сайте есть пиксель фейсбука и в нем уже есть ивенты, это все успешно отслеживается. Но я не могу понять как брать по API данные.

    Вот пример функции 

    CampaignStat <- fbGetMarketingStat( accounts_id = "act_00000000000",

                                      level = "campaign",

                                      fields = "campaign_name,campaign_id,impressions,clicks,cpc",

                                      sorting = "impressions_descending",

                                      breakdowns = "",

                                      date_start = "2017-07-01",

                                      date_stop = "2017-07-24",

                                      api_version = "v2.10",

                                      access_token = longtime_token)
    Немного погуглив я нашел что нужно брать данные как то через action_type или через actions:offsite_conversion.fb_pixel_purchase

    В общем буду очень признателен если подскажете кусок кода где нужно вставить чтобы тянуть конверсии.

    • 0
      Александр Владимирович
      23 дня назад

      Добрый день, с конверсиями там сложнее если вам надо их разбивать по типу, т.е. если надо целиком все конверсии получить то просто добавьте поле actions в аргумент fields.


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

  2. 0
    2 месяца назад
    Спасибо за отличную статью. У меня такой вопрос, Ads Manager пишет что ctr = 7,45%, а в RStudio ctr того же эдсета равен 9%. Кому верить?
    • 0
      Андрей Кукушкин
      2 месяца назад
      Хороший вопрос, по идее такой ситуации быть не должно, попробуйте проверить составляющие Ctr в обоих источниках, т.е. к-во показов и кликов, может так будет понятно в чём разница. Возможно где то берутся уникальные показы или клики а в другом нет.
  3. 0
    3 месяца назад
    А можно подключиться к этим данным без R через Power Query?
  4. 0
    3 месяца назад

    Интересно, как это в Windows 10 проделать?: 

    2.1. Для установки пакетов с GitHub предварительно установите пакет devtools с помощью стандартной команды install.packages.

    install.packages("devtools")

    2.2. Подключите пакет devtools и установите его с помощью пакет rfacebookstat.

    library(devtools)
    install_github('selesnow/rfacebookstat')
    library(rfacebookstat)
  5. 0
    5 месяцев назад

    Алексей, а на планируется разработка аналогичного пакета для Вконтакте?  У вас есть пакет https://github.com/selesnow/rvkstat  , но он выгружает статистику только по группам. А нужно по рекламным кампаниям, по дням.

  6. 0
    5 месяцев назад

    У меня почему-то приведенный в комментариях код по дням не работал. Поменял "fbdaily <- data.frame()" на "fbdaily <- NULL" - все заработало.

    • 0
      Leontiev Anton
      5 месяцев назад

      Странно по идее fbdaily <- data.frame() просто создаёт пустой дата фрейм, и проблем возникнуть не должно было, но в целом надо смотреть на ошибку.

  7. 0
    7 месяцев назад

    Спасибо вам большое за такие развёрнутые ответы и за ваше время! 

    теперь туман развеивается,  и кое-что проясняется и становится понятным) 

    по дням, правда, всё равно не получается))

    вставила скрипт, получила вкладки temp  и fbdaily.

    в temp 21 строка, в fbdaily 672

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

    на примере одной кампании: http://www.screencapture.ru/file/3EDA0040 

    т.е. таблица просто продублировалась 32 раза..... 

    • 0
      Tatie Nelson
      7 месяцев назад

      Наиболее вероятно что вы прописали аргументы  date_start  и   date_stop функции fbGetMarketingStat "2016-08-01" и "2016-09-01", поэтому у вас как и положено проходит 32 итерации, но в таблицу temp возвращаются данные не за каждый день отдельно по очереди, а за весь период. 


      Укажите эти аргументы так же как в моём примере т.е. date_start = dt и date_stop = dt.

      В таком случае всё будет работать правильно.
    • 0
      Tatie Nelson
      7 месяцев назад

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




      Давайте я попробую вам объяснить как работает этот цикл.


      #Вытягиваем информацию по дням

      for(i in as.Date("2016-08-01"):as.Date("2016-09-01")){

        dt <- format(as.Date(i), "%Y-%m-%d")

        temp <- fbGetMarketingStat(accounts_id = "act_000000000",

                                      level = "campaign",

                                      fields = "account_name,campaign_name,impressions,unique_impressions,clicks,spend",

                                      breakdowns = "placement,impression_device",

                                      date_start = dt,

                                      date_stop = dt,

                                      access_token = tok)

        

       fbdaily <- rbind(fbdaily, temp)}



      Первая строка:

      for(i in as.Date("2016-08-01"):as.Date("2016-09-01"))


      Задаёт счётчик i, который берёт даты начиная от 2016-08-01 и заканчивая 2016-09-01


      Вторая строка:

      dt <- format(as.Date(i), "%Y-%m-%d")


      Создаёт объект dt который содержит текущую дату счётчика i в формате "%Y-%m-%d", при первой итерации это дата будет 2016-08-01.


      Третья строка:

      temp <- fbGetMarketingStat(accounts_id = "act_000000000",

                                      level = "campaign",

                                      fields = "account_name,campaign_name,impressions,unique_impressions,clicks,spend",

                                      breakdowns = "placement,impression_device",

                                      date_start = dt,

                                      date_stop = dt,

                                      access_token = tok)


      Формируется объект temp, это таблица с данными за 1 день, за день который содержится на текущей итерации в счётчике i, в коде аргументы date_start и date_stop равны объекту dt, как помним во второй строке в объект dt записывается текущая дата счётчика i.


      Четвёртая строка:

       fbdaily <- rbind(fbdaily, temp)


      С помощью функции rbind мы прикрепляем полученную за один день статистику из объекта temp  к результирующей таблице fbdaily.


      Переход на следующую итерацию:

      Далее цикл переходит на следующую операции, тюею повторяется всё тоже самое, но дата в счётчике i уже будет 2016-08-02, и так будет повторяться со всеми датами, в итоге к таблице fbdaily будет по очереди прикреплена статистика отдельно за каждый день, а в таблице temp останутся данные за дату которой соответсвовал счётчик i на последней итерации, в данном случае 2016-09-01.

    • 0
      Tatie Nelson
      7 месяцев назад
      Мы потом из каждого комментария Алексея делаем отдельную статью. Чтоб добро не пропадало :)
  8. 0
    7 месяцев назад

    Добрый день, Алексей! 

    Подскажите, пожалуйста, почему при попытке установить пакет выдаёт такую ошибку http://prntscr.com/dv5gi8 ?

    • 0
      Tatie Nelson
      7 месяцев назад

      Надо предварительно установить пакет RCurl:



    • 0
      Tatie Nelson
      7 месяцев назад

      уже разобралась)) 

      подскажите, а как теперь всё это дело отправить в power bi?

      • 0
        Tatie Nelson
        7 месяцев назад

        С помощью R коннектора.


        Получить данные -> Другое -> R-Скрипт



        Далее в диалоговое окно "Выполнить сценарий R" вставьте ваш R скрипт, в данном случае токен повторно получать не надо, просто в виде строки укажите его в аргументе token.



        Нажимаем OK и данные будут загружены в Power BI.
        • 0
          Алексей Селезнёв
          7 месяцев назад

          спасибо! всё получилось! 

          сейчас читаю ваш ответ Марии про разбивку по датам. Но вот здесь зашла в тупик. 

          RStudio не выдаёт никаких данных по описанному методу. 

          PowerBI выдаёт ошибку http://prntscr.com/dwsr6x 

          • 0
            Tatie Nelson
            7 месяцев назад

            Часть кода съел блгг при публикации комментария, полная версия кода для подневной выгрузки представлена ниже.


            #Подключаем пакеты

            library("zoo")

            library("rfacebookstat")

            #Получаем токен

            tok <- fbGetToken(app_id = "00000000000")

            #Вытягиваем информацию по дням

            for(i in as.Date("2016-08-01"):as.Date("2016-09-01")){

              dt <- format(as.Date(i), "%Y-%m-%d")

              temp <- fbGetMarketingStat(accounts_id = "act_000000000",

                                            level = "campaign",

                                            fields = "account_name,campaign_name,impressions,unique_impressions,clicks,spend",

                                            breakdowns = "placement,impression_device",

                                            date_start = dt,

                                            date_stop = dt,

                                            access_token = tok)

              

             fbdaily <- rbind(fbdaily, temp)}

          • 0
            Tatie Nelson
            7 месяцев назад
            Киньте мне код без токена и без ID аккаунта, я постараюсь найти ошибку.
            • 0
              Алексей Селезнёв
              7 месяцев назад

              Алексей, я очень извиняюсь, если задаю изначально глупые вопросы) это моё первое знакомство с R, и я пока что-то делаю, но сама до конца не понимаю, что именно работает и почему) 

              Я так понимаю, что "CampStat <- ", "AccStat <- ", "temp <-" и прочее - это какие-то комментарии, потому как, если с ними так и писать в RStudio, то ничего не происходит: http://prntscr.com/dxl9h8

              Если я их удаляю, то сразу получаю статистику: http://www.screencapture.ru/file/Db781332 

              Соответственно, если я пытаюсь вставить прямиком тот код, который вы написали выше, то не получаю ничего: http://www.screencapture.ru/file/dF042B5D 

              Далее, я пытаюсь с различными вариациями удалять эти "комментарии", менять строки местами, но в результате мне всё равно выдаёт, что "object 'fbdaily' not found" http://www.screencapture.ru/file/3F1C993b 

              Вероятно, я просто что-то принципиально делаю не так и как-то нарушаю структуру кода? 

              • 0
                Tatie Nelson
                7 месяцев назад

                Добрый день)

                Я так понимаю, что "CampStat <- ", "AccStat <- ", "temp <-" и прочее - это какие-то комментарии, потому как, если с ними так и писать в RStudio, то ничего не происходит: http://prntscr.com/dxl9h8

                Если я их удаляю, то сразу получаю статистику: http://www.screencapture.ru/file/Db781332 


                Это не так, символ <- это оператор присвоения, т.е. с помощью "CampStat <-"  вы создаёте объект CampStat, который является таблицей с данными, после запуска функции он появляется в вашем рабочем окружение но ничего не возвращает в консоль, поэтому вам кажется что функция ничего не делает, своё рабочее окуржение вы видите в области Global Environment, смотрите скрин ниже:


                Кликнул на любой из объектов рабочего окружения вы откроете его в привычном для вас табличном виде, если конечно это объект класса data.frame.




                Соответственно, если я пытаюсь вставить прямиком тот код, который вы написали выше, то не получаю ничего: http://www.screencapture.ru/file/dF042B5D 


                Да опять я немного ошибся в коде, я не сформировал предварительно объект fbdaily. Попробуйте запустить следующий код:


                #Подключаем пакеты

                library("zoo")

                library("rfacebookstat")

                #Получаем токен

                tok <- fbGetToken(app_id = "00000000000")

                #Формируем результирующий data frame

                 fbdaily <- data.frame()

                #Вытягиваем информацию по дням

                for(i in as.Date("2016-08-01"):as.Date("2016-09-01")){

                  dt <- format(as.Date(i), "%Y-%m-%d")

                  temp <- fbGetMarketingStat(accounts_id = "act_000000000",

                                                level = "campaign",

                                                fields = "account_name,campaign_name,impressions,unique_impressions,clicks,spend",

                                                breakdowns = "placement,impression_device",

                                                date_start = dt,

                                                date_stop = dt,

                                                access_token = tok)

                  

                 fbdaily <- rbind(fbdaily, temp)}



  9. 0
    7 месяцев назад

    Алексей, здравствуйте, 


    Подскажите, пожалуйста, как вы получаете информацию по конверсиям из аккаунта, например, только по количеству покупок и добавлений в корзину? 

    total_actions возвращает некорректные значения, к сожалению. 

    • 0
      Andrey Markin
      7 месяцев назад

      Часть кода съел блгг при публикации комментария, полная версия кода для подневной выгрузки представлена ниже.


      #Подключаем пакеты

      library("zoo")

      library("rfacebookstat")

      #Получаем токен

      tok <- fbGetToken(app_id = "00000000000")

      #Вытягиваем информацию по дням

      for(i in as.Date("2016-08-01"):as.Date("2016-09-01")){

        dt <- format(as.Date(i), "%Y-%m-%d")

        temp <- fbGetMarketingStat(accounts_id = "act_000000000",

                                      level = "campaign",

                                      fields = "account_name,campaign_name,impressions,unique_impressions,clicks,spend",

                                      breakdowns = "placement,impression_device",

                                      date_start = dt,

                                      date_stop = dt,

                                      access_token = tok)

        

       fbdaily <- rbind(fbdaily, temp)}

    • 0
      Andrey Markin
      7 месяцев назад
      Добрый день, мы пока до конверсий не добрались, тянем информацию о показах, тратах и кликах, как только разберусь с этим вопросом отпишусь вам.
  10. 0
    7 месяцев назад

    Алексей, добрый день! Большое спасибо за статью! Сейчас пытаюсь настроить выгрузку данных и у меня возник вопрос по токену: мне надо указывать app token или user token? На этой странице указано два варианта https://developers.facebook.com/tools/accesstoken/ И App Token состоит из app id|"значение токена" Надо указывать все целиком или только значение после | ?

    Я попробовала все варианты, вставляла код, который вы писали для создания таблицы AccStat, но в итоге получала ошибку в Rstudio - Error: unexpected input in "AccStat <- fbGetMarketingStat( accounts_id = В чем я ошиблась? Заранее спасибо за ответ!


    • 0
      Мария Аляева
      7 месяцев назад

      Добрый день, в пакете rfacebookstat используется маркер доступа для веб приложения, https://developers.facebook.com/docs/facebook-login/manually-build-a-login-flow .


      По идее вы его можете получить с помощью функции fbGetToken(app_id = 00000) указав ID вашего приложения.

      • 0
        Алексей Селезнёв
        7 месяцев назад

        Когда я запускала эту функцию, у меня появлялось поле, в которое я должна была ввести токен, но сам токен я не получала. Но мы решили эту проблему :) У меня еще появился вопрос: можно ли сделать breakdowns по дням?

        • 0
          Мария Аляева
          7 месяцев назад

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


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

          #Подключаем пакеты

          library("zoo")

          library("rfacebookstat")

          #Получаем токен

          tok <- fbGetToken(app_id = "00000000000")

          #Вытягиваем информацию по дням

          for(i in as.Date("2016-08-01"):as.Date("2016-09-01")){

            dt <- format(as.Date(i), "%Y-%m-%d")

            temp <- fbGetMarketingStat(accounts_id = "act_000000000",

                                          level = "campaign",

                                          fields = "account_name,campaign_name,impressions,unique_impressions,clicks,spend",

                                          breakdowns = "placement,impression_device",

                                          date_start = dt,

                                          date_stop = dt,

                                          access_token = tok)

          • 0
            Алексей Селезнёв
            2 месяца назад

            Добрый день, подскажите пожалуйста, копирую приведенный выше код, 
            выдает такую ошибку: 

             Error in as.Date.numeric(i) : надо указать 'origin'

            В чем может быть дело? 
            Благодарю.

            • 0
              Ярослав Ярёменко
              месяц назад

              Здравствуйте!

              Данная ошибка возникает скорее всего потому что у вас не установлен пакет zoo, установите его с помощью кода ниже:

              install.packages("zoo")


              Теперь второй момент, с момента написания прошлого кода API несколько изменилось, и тот код уже не работает, вот пример нового кода для работы с версией API v2.9.


              #Подключаем пакеты


              library("zoo")

              library("rfacebookstat")


              #Получаем токен


              tok <- fbGetToken(app_id = "act_000000000")


              #Вытягиваем информацию по дням


              for(i in as.Date("2017-06-01"):as.Date("2017-06-15")){

                

                dt <- format(as.Date(i), "%Y-%m-%d")

                

                temp <- fbGetMarketingStat(accounts_id = "act_000000000",

                                           level = "campaign",

                                           fields = "account_name,campaign_name,impressions,clicks,spend",

                                           breakdowns = "publisher_platform",

                                           date_start = dt,

                                           date_stop = dt,

                                           api_version = "v2.9",

                                           access_token = tok)}

                
  11. 0
    8 месяцев назад

    Здравствуйте Алексей! Большое спасибо вам за очень крутые материалы!

    Как раз попытался разобраться с импортом данных и получил такую ошибку, при том, что аккаунт мой личный - т.е. доступ там точно админский:

    (#273) This Ads API call requires the user to be admin of the ad account. User is not admin on ad account 692471214105926.OAuthException273DBstQOfeq45

    Не подскажите, с чем может быть связана эта ошибка? Может быть что-то в приложении нужно еще донастроить?



Чтобы оставить комментарий, необходимо авторизироваться

Подписаться

на самую полезную рассылку по интернет-маркетингу

Самое

обсуждаемое популярное читаемое