В предыдущем гостевом посте веб-аналитик Николай Глушков рассказал, как с помощью языка R и Google Tag Manager автоматически создать множество списков ретаргетинга ВКонтакте и интегрировать их на свой сайт через Google Tag Manager.
В новом гостевом посте речь пойдет об автоматическом создании объявлений под каждый список ретаргетинга.
Зачем это делать?
В результате внедрения описанного алгоритма мы получим, по сути, аналог системы динамического ретаргетинга, который есть в Facebook.
Как автоматически создавать объявления?
Напомню, что мы рассматриваем автоматизацию ретаргетинга на примере сайта квестов.
Итак, первое, что нужно сделать, — получить таблицу с полями, необходимыми для создания объявления:
- ссылка на страницу;
- название квеста;
- город;
- название фотографии;
- описание объявления (формируется как: город+число игроков+сложность).
Выгрузить таблицу можно несколькими способами:
- Распарсить сайт.
- Передать данные с сайта в Google Analytics и выгрузить их оттуда.
- Выгрузить данные из собственной базы.
Должна получится такая таблица в формате csv:
Подробнее читайте в нашем посте
Для этого:
1. Переходим по ссылке.
https://oauth.vk.com/authorize?client_id={client id}&redirect_uri=http://oauth.vk.com/blank.html&display=
popup&scope=ads&respons e_type=token
2. Получаем обновленный токен доступа.
#подключаем библиотекиlibrary("stringr")library("RCurl")library("RGA")library("RJSONIO")#импортируем нашу таблицуproduct_list<-read.csv("products.csv", header = TRUE,sep =";")#помещаем обновленный токен в переменнуюvk_token<-"xxxxxxxxxxxxx"#получаем весь список групп ретаргетингаtarget_groups <- postForm("https://api.vk.com/method/ads.getTargetGroups", account_id =xxxx, #id рекламного кабинета extended = 1, access_token=vk_token #токен)#преобразовываем ответ в формат спискаtarget_groups_list<- fromJSON( TargetGroups )#Создаем новое поле, содержащее id аудитории (пока пустое)product_list$retargeting_group_id<-""#для каждого кода ретаргетинга проверяем по названию, относится ли он#к нашему списку, и если да, помещаем значение в соответствующее полеfor(i in 1:length(target_groups_list$response) ) { if( target_groups_list$response[[i]]$name %in% product_list$title){ product_list[product_list$title==target_groups_list$response[[i]]$name,]$retargeting_group_id<-target_groups_list$response[[i]]$id }}
В итоге у нас получится такой датафрейм:
for ( i in 1:nrow(product_list) ){ #получаем загрузочный url для загрузки фото upload_photo_url <- postForm("https://api.vk.com/method/ads.getUploadURL", ad_format = 1, access_token=vk_token ) #Ставим задержку между запросами Sys.sleep(1) #преобразовываем ответ в формат list upload_photo_list <- fromJSON( upload_photo_url ) #путь до фотографии file.name <-product_list$img_name[i] #загружаем фото на сервер photo_response<- postForm(upload_photo_list, file = fileUpload(filename = file.name, contentType="image/png"), .opts = list(ssl.verifypeer = FALSE), ad_format = 1, access_token=vk_token ) Sys.sleep(1) #создаем пустой список с настройками объявления list_settings <- vector(mode="list") #отключаем RJSONIO и подулючаем jsonlite detach("package:RJSONIO", unload=TRUE) library("jsonlite") list_settings[[1]] <- list( "campaign_id" = "xxxx", #id кампании "category1_id" = 42, #id категории объявления "ad_format" = 1, # формат объявления "cost_type" = 1, # тип оплаты(за показы) "cpm" = 11, # стоимость 1000 показов "impressions_limited" = 1,# ограничение до 100 показов "name" = paste(product_list$title[i],product_list$city[i],sep=" "), # название обьявления "title" = iconv( product_list$title[i], "CP1251", "UTF-8"), # заголовок "description" = iconv( product_list$description[i], "CP1251", "UTF-8"), # описание "link_url" = product_list$url[i], # ссылка на страницу "link_domain" ="norakrolika.ru", # отображаемый домен "photo" = fromJSON( photo_response )$photo, # загруженное фото "retargeting_groups" = product_list$retargeting_group_id[i] # id группы ретаргетинга ) #сериализуем полученный список serial_data<-toJSON( list_settings ,auto_unbox=TRUE) #Создаем объявление created_ad <- postForm("https://api.vk.com/method/ads.createAds", .opts = list(ssl.verifypeer = FALSE), account_id = "xxxxx", v = "5.53", data = serial_data, access_token=vk_token ) print(created_ad) Sys.sleep(1) #отключаем jsonlite и подключаем RJSONIO detach("package:jsonlite", unload=TRUE) library("RJSONIO")}
В коде используются две библиотеки для работы с json: RJSONIO и jsonlite. Обе одновременно работать не могут, поэтому их приходится поочередно включать и отключать.
Важно! Может возникнуть проблема с кодировкой, при создании объявления — используйте функцию iconv для нормальной работы.
В результате будут автоматически созданы объявления для каждого списка ретаргетинга:
Комментарии (0)
Последние комментарии
Чтобы оставить комментарий, нужно войти