Как да заредим статистиката от рекламни кампании във Facebook с помощта на API и езика за програмиране R
Популярността на Facebook като рекламоносител стремително расте, но анализирането на статистиката в рекламния профил е неудобно. Един от алтернативните начини е да се изтеглят статистическите данни в R и да се
R е език за програмиране за статистическа обработка на данни и работа с графика, а също така свободна програмна среда за изчисляване, с отворен код в рамките на проекта GNU. Потребителите ежедневно качват нови полезни пакети за свободен достъп, затова библиотеката с пакети в R е богата и значително разширява базовите възможности на езика.
Написах редица функции за работа с Facebook API и ги събрах в пакет rfacebookstat, който е достъпен свободно на GitHub.
1. Създайте приложение във Facebook
1.1. За да започнете работа с Facebook API, трябва да добавите ново приложение. За целта отидете в лявото меню и в раздел «Разработчик» изберете команда «Manage Apps».
1.2. В профила на разработчика натиснете бутон «+ Add a New App».
Попълнете полето «Видимо име на приложение», «Е-адрес за връзка», «Категория» и натиснете «Създайте ID на приложението».
1.3. По-нататък попадате в меню «Product Setup». Кликнете върху бутона «Get Started» срещу позицията «Facebook Login».
1.4. Преминете към настройките на приложението. Във вложката «Basic» се намира информация за ID и App Secret на приложението, което ще е нужно за работа с API.
На тази вложка също така запълнете полетата:
- «Видимо име»;
- «Домейни на приложението»;
- «Е-адрес за връзка»;
- «URL- адреса на политиката за конфиденциалност»;
- «URL- адрес на Потребителското споразумение».
Можете да въведете произволно име на приложението, а останалите полета да попълните, както е показано в примера по-долу.
1.5. В долната част на прозореца натиснете «+ Add Platform».
От списъка с предложени платформи изберете уеб-сайт.
В полето «Site URL» въведете «https://github.com/selesnow/rfacebookstat» и натиснете «Save Changes».
1.6. В менюто на приложението преминете към раздела «Facebook Login». В полето «Valid OAuth redirect URIs» въведете «https://www.facebook.com/connect/login_success.html».
1.7. След това трябва да изберете, от какви рекламни акаунти ще получавате статистиката през API и да копирате техните ID.
За да получите ID на акаунта, преминете в рекламния профил и копирайте цифрите от параметъра act в URL.
Преминете в раздел «Настройки» —> «Допълнително» и в блока «Рекламни акаунти» натиснете бутона «API Ads».
В отворения прозорец въведете 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
За да започнете работа с Facebook API, остава да получите токен за достъп. За целта използвайте функцията fbGetToken в пакета rfacebookstat.
3.1. На вложката «Настройки» —> «Основно» получете ID на Вашето приложение и го въведете в примера по-долу вместо 00000000000000.
token <- fbGetToken(app_id = 00000000000000)
3.2. Възможно е, когато получавате токен, да попаднете на страница с предупреждение, че някои разрешения още не са одобрени за използване от Facebook. Пропуснете това предупреждение с помощта на бутона «Продължете като, ...».
Потвърдете входа чрез Facebook.
3.3. След това копирайте генерирания токен за достъп до API. Той ще се появи в адресния ред на Вашия браузър в параметъра access_token.
Вмъкнете токена в R конзолата, като отговор на запитването «Enter your token».
Получения токен ще действа в течение на няколко часа, но Вие можете да го смените на дългосрочен токен с помощта на функцията fbGetLongTimeToken.
3.4. Въведете вашия ClientID и App Secret за приложението, а също така обекта, в който сте съхранили получения токен. В показания пример създадох обект 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_id — ID на рекламния акаунт. Това е задължителен аргумент. Вие можете да го получите от URL, ако преминете в нужния рекламен Facebook акаунт.
Въвеждайте 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 | The ID number of your ad account, which groups your advertising activity. Your ad account includes your campaigns, ads and billing. |
account_name string | The name of your ad account, which groups your advertising activity. Your ad account includes your campaigns, ads and billing. |
action_values | The total value of all conversions attributed to your ads. |
actions | The total number of actions people took that are attributed to your ads. Actions may include engagement, clicks or conversions. |
ad_id numeric string | The unique ID of the ad you're viewing in reporting. |
ad_name string | The unique ID of the ad you're viewing in reporting. |
adset_id numeric string | The unique ID of the ad set you're viewing in reporting. An ad set is a group of ads that share the same budget, schedule, delivery optimization and targeting. |
adset_name string | The name of the ad set you're viewing in reporting. An ad set is a group of ads that share the same budget, schedule, delivery optimization and targeting. |
app_store_clicks numeric string | Броят на щракванията върху връзки към магазин за приложения в рекламите ви. |
buying_type string | The method by which you pay for and target ads in your campaigns: through dynamic auction bidding, fixed-price bidding, or reach and frequency buying. |
call_to_action_clicks numeric string | The number of times people clicked the call-to-action button on your ad. |
campaign_id numeric string | The unique ID number of the ad campaign you're viewing in reporting. Your campaign contains ad sets and ads. |
campaign_name string | The name of the ad campaign you're viewing in reporting. Your campaign contains ad sets and ads. |
canvas_avg_view_percent numeric string | The average percentage of the Facebook Canvas that people saw. Canvas is a screen that opens on mobile after a person clicks the Canvas link in your ad. It may include a series of interactive or multimedia components, including video, images, product catalogs and more. |
canvas_avg_view_time numeric string | The average total time, in seconds, that people spent viewing a Facebook Canvas. Canvas is a screen that opens on mobile after a person clicks the Canvas link in your ad. It may include a series of interactive or multimedia components, including video, images, product catalogs and more. |
clicks numeric string | The total number of clicks on your ad. This may include offsite clicks to your website, Page likes, post comments, event responses or app installs. |
cost_per_10_sec_video_view | The average cost for each 10-second video view. |
cost_per_action_type | The average cost of a relevant action. |
cost_per_estimated_ad_recallers numeric string | The average cost for each estimated ad recall lift. |
cost_per_inline_link_click numeric string | The average cost of each inline link click. |
cost_per_inline_post_engagement numeric string | Средната цена за всяко директно ангажиране с публикация. |
cost_per_total_action numeric string | The average cost of a relevant action. |
cost_per_unique_action_type | Средната цена за всяко уникално действие. |
cost_per_unique_click numeric string | The average cost for each unique link click (all) on your ad. |
cost_per_unique_inline_link_click numeric string | Средната цена за всяко уникално щракване върху директна връзка. |
cpc numeric string | The average cost for each click (all) attributed to your ads. |
cpm numeric string | The average cost for 1,000 impressions. |
cpp numeric string | The average cost to reach 1,000 people. |
ctr numeric string | Click-through rate for all clicks. The total number of clicks you received (ex: offsite clicks, likes, event responses) divided by the number of impressions. |
date_start string | The start date for your data. This is controlled by the date range you've selected for your reporting view. |
date_stop string | The end date for your data. This is controlled by the date range you've selected for your reporting view. |
deeplink_clicks numeric string | Броят на щракванията върху връзки към конкретни части на приложение. |
estimated_ad_recall_rate numeric string | The rate at which an estimated number of additional people, when asked, would remember seeing your ads within 2 days. |
estimated_ad_recallers numeric string | An estimate of the number of additional people who may remember seeing your ads, if asked, within 2 days. This metric shows results for ads using brand awareness, video views and Page post engagement objectives. |
frequency numeric string | The average number of times each person saw your ad. |
impressions numeric string | The number of times your ads were viewed. |
inline_link_click_ctr numeric string | Процентът пъти, когато хора са видели рекламите ви и са извършили директно щракване върху връзка. |
inline_link_clicks numeric string | The number of clicks on links to select destinations or experiences, on or off Facebook-owned properties. Inline link clicks use a fixed 1-day-click attribution window. |
inline_post_engagement numeric string | The total number of actions that people take involving your ads (or all posts, in some cases). Inline post engagements use a fixed 1-day-click attribution window. |
newsfeed_avg_position numeric string | Средната позиция, където рекламата ви ще се поставя в новините на потребителите с мобилни и настолни устройства. Позиция 1 е най-отгоре в новините. |
newsfeed_clicks numeric string | Общият брой кликвания върху рекламата Ви в новините на потребителите, използващи мобилни устройства и стационарен компютър. |
newsfeed_impressions numeric string | Общ брой пъти, в които рекламата Ви, е показана в Новинарския поток на потребителите на мобилна и настолна версия. |
objective string | The objective you selected for your campaign. Your objective reflects the goal you want to achieve with your advertising. |
reach numeric string | The number of people who saw your ads at least once. Reach is different from impressions, which may include multiple views of your ads by the same people. |
relevance_score AdgroupRelevanceScore | A rating from 1 to 10 that estimates how well your target audience is responding to your ad. This score is shown after your ad receives more than 500 impressions. It's only visible when looking at reporting for ads and does not appear for ad sets and campaigns. |
social_clicks numeric string | The number of any clicks your ad receives (ex: likes, event responses, offsite clicks) when it's shown with social information (ex: Jane Doe likes this). |
social_impressions numeric string | The number of times your ads were viewed when displayed with social information, which shows Facebook friends who engaged with your Facebook Page or ad. |
social_reach numeric string | The number of people who saw your ad when displayed with social information, which shows other Facebook friends who engaged with your Facebook Page or ad. |
social_spend numeric string | Цялата сума, която сте похарчили до момента за показаните социални реклами (пример: Jane Doe харесва това). |
spend numeric string | The total amount of money you've spent on your campaign, ad set or ad during its schedule. |
total_action_value numeric string | The total value of all conversions attributed to your ads. |
total_actions numeric string | The total number of actions people took that are attributed to your ads. Actions may include engagement, clicks or conversions. |
total_unique_actions numeric string | The number of people who took an action that was attributed to your ads. |
unique_actions | The number of people who took an action that was attributed to your ads. |
unique_clicks numeric string | The total number of unique people who have clicked on your ad. Ex: if 3 people click on the same ad 5 times, it will count as 3 unique clicks. |
unique_ctr numeric string | Unique click-through rate for all clicks. The number of people who clicked anywhere in your ad, divided by the number of people you reached. Ex: if you received 20 unique clicks and your ad was shown to 1,000 unique people, your unique click-through rate would be 2%. |
unique_impressions numeric string | The number of people who saw your ads at least once. |
unique_inline_link_click_ctr numeric string | Процентът на случаите, когато хората са видели ваша реклама и са извършили щракване върху връзка. Директната скорост през щракване използва прозорец на фиксиран атрибут 1-дневно щракване. |
unique_inline_link_clicks numeric string | The number of people who performed an inline link click. |
unique_link_clicks_ctr numeric string | The percentage of people who saw your ad and performed a link click. |
unique_social_clicks numeric string | The number of individuals who click this ad (ex: likes, event responses, offsite clicks) when it's shown with social information (ex: Jane Doe likes this). |
unique_social_impressions numeric string | Броят хора, на които рекламата е показана рекламата ви със социален контекст. |
video_10_sec_watched_actions | The number of times your video was watched for an aggregate of at least 10 seconds, or for nearly its total length, whichever happened first. |
video_15_sec_watched_actions | Броят пъти, когато видеоклипът ви е гледан за общо поне 15 секунди или почти целия, независимо кое се е случило първо. |
video_30_sec_watched_actions | Броят пъти, когато видеоклипът ви е гледан за общо поне 30 секунди или почти целия, независимо кое се е случило първо. |
video_avg_pct_watched_actions | (Тази метрика скоро няма да е налична. Използвайте вместо нея video_avg_percent_watched_actions.) Това е общото време на гледане на видеоклип, разделено на преглежданията на вашия видеоклип по време на продължителността му. Това не е приложимо за видеа на живо. |
video_avg_percent_watched_actions | The average percentage of your video that people watched. |
video_avg_sec_watched_actions | (Тази метрика скоро няма да съществува. Вместо нея използвайте video_avg_time_watched_actions.) Това е общото време на гледане за вашия видеоклип, разделено на общия брой преглеждания на видеото. |
video_avg_time_watched_actions | The average time a video was watched. |
video_complete_watched_actions | The number of times your video was watched for an aggregate of at least 30 seconds, or for nearly its total length, whichever happened first. |
video_p100_watched_actions | The number of times your video was watched at 100% of its length, including watches that skipped to this point. |
video_p25_watched_actions | The number of times your video was watched at 25% of its length, including watches that skipped to this point. |
video_p50_watched_actions | The number of times your video was watched at 50% of its length, including watches that skipped to this point. |
video_p75_watched_actions | The number of times your video was watched at 75% of its length, including watches that skipped to this point. |
video_p95_watched_actions | The number of times your video was watched at 95% of its length, including watches that skipped to this point. |
website_clicks numeric string | The number of clicks on links to your website in your ads. |
website_ctr | Процентът случаи, когато хората са видели рекламата ви и са извършили щракване върху уеб сайт. |
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_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 — версия на Facebook API.
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. Изводи
Използвайки Facebook API и пакета с функции на език R rfacebookstat, Вие можете да:
- получите данни от своите рекламни акаунти, кампании, рекламии така нататък в множество различни разрези;
- строите, въз основа на получени данни, всякакви визуализации, използвайки цялата мощ на езика R;
- предавате получените данни в произволна база данни или да ги съхранявате във вид на CSV-файл.