AdWords
Сейчас в сети: 550
Сейчас в сети: 550
Советы и вопросы по использованию скриптов AdWords
Подсказки
star_border
Ответить

Еще один скрипт для отсева площадок в КМС

Ведущий участник

Скрипт работает на основе заданных критериев для низко кликабельных площадок и подозрительно активных.

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

2 Ответ экспертаverified_user

Re: Еще один скрипт для отсева площадок в КМС

Ведущий участник
function main() {
  
  labelNames="CleanerGDN"; //Ярлык кампаний, которые участвуют в анализе
  var hypeCtr = 10; //Площадки с CTR больше hypeCtr отключаются
  var hypeImpressions = 10; //при числе показов не менее hypeImpressions
  var lowCtr = 0.1; ////Площадки с CTR меньше lowCtr отключаются
  var lowImpressions = 10000; //при числе показов не менее lowImpressions 
  var ignoreAnonymous = 1; //Игнорировать anonymous.google, 0 будет исключать
  var during = "YESTERDAY"; //Период сбора данных
  
  //TODAY | YESTERDAY | LAST_7_DAYS | THIS_WEEK_SUN_TODAY | THIS_WEEK_MON_TODAY | LAST_WEEK |
  //LAST_14_DAYS | LAST_30_DAYS | LAST_BUSINESS_WEEK | LAST_WEEK_SUN_SAT | THIS_MONTH
  
 
  var campaignArray = [];
  var excludePlacementArray = [];
  var campaigns="";
  var campaignSelector = AdWordsApp
     .campaigns()
     .withCondition("LabelNames CONTAINS_ANY ['"+labelNames+"']");

 var campaignIterator = campaignSelector.get();
 while (campaignIterator.hasNext()) {
   campaignArray.push( "'"+campaignIterator.next().getName()+"'" ); 
 }
  
  campaigns = campaignArray.join(',');
  Logger.log("Campaigns: " + campaigns);

 
  var report = AdWordsApp.report("SELECT Domain, Clicks, Impressions, Ctr, Conversions " +
"FROM AUTOMATIC_PLACEMENTS_PERFORMANCE_REPORT " + 
"WHERE CampaignName IN ["+ campaigns +"] " +
"DURING " + during);
 var rows = report.rows();
  while (rows.hasNext()) {
    var row = rows.next();
    var domain = row['Domain'];
    var clicks = row['Clicks'];
    var impressions = row['Impressions'];
    var сonversions = row['Conversions'];
    var ctr = row['Ctr'];
    
  if (ignoreAnonymous && domain.toString()=="anonymous.google") continue;
    //HYPE
    if ((clicks/impressions*100 >= hypeCtr) && (impressions >= hypeImpressions) && (сonversions< 1)) {
      excludePlacementArray.push(domain.toString());
    }
    //LOWER
     if ((clicks/impressions*100 <= lowCtr) && (impressions >= lowImpressions) && (сonversions< 1)) {
      excludePlacementArray.push(domain.toString());
    }
  }
  if (excludePlacementArray.length){
  addNegativePlacements(excludePlacementArray);
  }
  else {
    Logger.log('Nothing domain to exclude');
  }

}

function addNegativePlacements(negativePlacements) {
var campaignIterator = AdWordsApp.campaigns()
.withCondition("LabelNames CONTAINS_ANY [" + labelNames + "]").get();
while (campaignIterator.hasNext()) {
var campaign = campaignIterator.next();

negativePlacements.forEach(function(entry) {
excludePlacement = campaign.display().newPlacementBuilder();
excludePlacement.withUrl(entry.toString()).exclude();
  Logger.log('Excluded: '+ entry.toString());
});
}
}

Re: Еще один скрипт для отсева площадок в КМС

Восходящие звезды
Забрал тестировать. И добавил в свой список MustHave скриптов))
---------
С уважением Олег Поддубный

Re: Еще один скрипт для отсева площадок в КМС

Бакалавр ✭ ✭
О! Я дождался его! )))

А как то можно допилить, чтобы он еще и учитывал количество конверсий? Одну малюсенькую переменную добавить всего то? )))

Re: Еще один скрипт для отсева площадок в КМС

Ведущий участник
там учитывает, отключает, если нет конверсий

Re: Еще один скрипт для отсева площадок в КМС

Бакалавр ✭ ✭
Понял, спасибо!

Re: Еще один скрипт для отсева площадок в КМС

Бакалавр ✭ ✭

А здесь

 var lowImpressions = 10000; //при числе показов не менее lowImpressions

 должно быть написано не более, или я не правильно понимаю?

Re: Еще один скрипт для отсева площадок в КМС

Ведущий участник

не менее (более), так как это планка, после которой не кликабельные площадки будут исключаться.
Т.е. на одной площадке должно показаться более чем lowImpressions раз.
Цифры которые стоят сейчас - для примера. Проставляйте обязательно свои.

Re: Еще один скрипт для отсева площадок в КМС

Бакалавр ✭ ✭

Просто немного запутался потом что и здесь

var hypeImpressions = 10; //при числе показов не менее hypeImpressions

 

и здесь

 

var lowImpressions = 10000; //при числе показов не менее lowImpressions

написано не менее, поэтому подумал что где-то должно быть не более ))

Re: Еще один скрипт для отсева площадок в КМС

Студент ✭ ✭ ✭
Спасибо за отличный скрипт. По работе скрипта есть несколько вопросов. Я в коде не силен, поэтому спрашиваю. 1. Как можно адаптировать скрипт, чтобы его использовать для МСС аккаунта, у меня он не работает. Работает, когда размещаю скрипт непосредственно в аккаунте. 2. Что делает скрипт с площадками, которые он нашел? Может ли скрипт добавлять площадки в какой-нибудь общий список?