Прощайте, «авгиевы конюшни»! Скрипт для автоматической чистки площадок в КМС AdWords

chinos10

UPD: новая версия скрипта здесь. А в этой статье можно почитать при принцип его работы.

Вчера я вел семинар от Google Partners по «Advanced Search» в Минске. Было здорово, весело и вопросы из зала были качественные.

В перерыве, пока мы говорили о скриптах, мне в голову пришла идея: а почему бы не написать скрипт, который автоматически получает список площадок в КМС и те, которые содержат «game», «igry», «resheb» и т.д. добавляет в исключения кампании.

Я озвучил идею, и людям понравилось. Более того, скрипт можно было бы настроить на автоматическое выполнение, к примеру, каждые 7 дней. И тонны мусора из КМС автоматически подчищались бы скриптом.

Больше не нужно было бы сидеть и часами выбирать сотни левых площадок вручную. Даже с фильтрами это мутроная и неприятная работа. А ведь 80-90% площадок можно исключить автоматически по названию домена.

Пацан сказал — пацан сделал

Как и обещал, бесплатно, без регистрации и СМС 🙂 Забирайте и пользуйтесь!

1. Создайте новый скрипт в разделе «Скрипты» и скопируйте туда код (в конце статьи):

1440159106021

 

2. Настройте автоматический запуск скрипта каждую неделю

1440159798182

 

3. Добавьте к кампаниям КМС в аккаунте, к которым хотите добавлять исключения, ярлык «PlacementCleaner»

1440159546747

Код скрипта:

/*
1) Поиск мест размещений идет по всему аккаунту. Эти исключения мест размещений автоматически добавляются в кампании, помеченные ярлыком "PlacementCleaner". Добавьте этот ярлык к кампаниям в КМС

2) Проверьте, подходят ли вам исключения. Добавьте или удалите ненужные. Можно добавить для исключения и доменную зону. Пример: '.kz'
*/

var exclude = ['gta', 'dota', 'minecraft', 'resheb', 'referat', 'igry','igra', 'igri', 'game', 'flash', 'apk', 'android', 'mp3', 'fb2', 'dating', 'goroskop', 'astro', 'film', 'video', 'movie', 'book', 'download', 'torrent', 'kino', 'radio', 'weather', 'pesni', 'chords', 'anekdot', 'zodiak', 'minusovk', 'knig', 'recept', 'recipe', 'spongebob', 'barbie', 'skyrim', 'ferma', 'dom2', 'mafia', 'gadani', 'mario', 'epub', '2048', 'dendy', 'sega', 'zuma', 'aforizm', 'citat', 'pdf', 'simulat', 'mods', 'play', 'spintires', 'spin-tires'];
/*
3) Выберите период учета статистики или очистите поле, чтобы обработать данные в аккаунте за весь период.

Возможные периоды:
LAST_7_DAYS
LAST_WEEK
LAST_MONTH
LAST_14_DAYS
LAST_30_DAYS
LAST_BUSINESS_WEEK
THIS_WEEK_SUN_TODAY
THIS_WEEK_MON_TODAY
LAST_WEEK_SUN_SAT
THIS_MONTH

*/

var period = 'LAST_MONTH';
function main() {
var periodString = '';

if(period) {
periodString = "DURING " + period;
Logger.log(periodString);
} else {
Logger.log('DURING ALL TIME');
}
var report = AdWordsApp.report("SELECT Domain, Clicks, ConvertedClicks " +
"FROM AUTOMATIC_PLACEMENTS_PERFORMANCE_REPORT " +
periodString);

var rows = report.rows();
var excludePlacementArray = [];

while (rows.hasNext()) {
var row = rows.next();
var placement = row['Domain'];
if (containsAny(placement.toString(), exclude) && (row['ConvertedClicks'] < 1)) {
excludePlacementArray[excludePlacementArray.length] = placement.toString();
}

}

addNegativeKeywordToCampaign(excludePlacementArray);

}

function containsAny(str, substrings) {
for (var i = 0; i != substrings.length; i++) {
var substring = substrings[i];
if ((str.indexOf(substring) != - 1) && (str.indexOf('mobileapp::') == - 1)) {
return substring;
}
}
return null;
}

function addNegativeKeywordToCampaign(negativePlacements) {
var campaignIterator = AdWordsApp.campaigns().withCondition("LabelNames CONTAINS_ANY ['PlacementCleaner']").get();
while (campaignIterator.hasNext()) {
var campaign = campaignIterator.next();

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

Как вариант, для уже действующих аккаунтов первый раз запустить скрипт можно по всей истории аккаунта за все время, чтобы собрать все мусорные площадки, которые скопились. Потом — вернуть в скрипте период «LAST_WEEK» и настроить на автоматическое выполнение.

Распространенные ошибки

Вопрос:

Алексей, добрый вечер.
Подскажи пожалуйста по поводу скрипта чистки площадок в кмс
Выдает ошибку
The label PlacementCleaner does not exist. (line 66)

Ответ: Читайте внимательно пункт №3

Есть вопросы? Пишите в комментариях!

Алексей Ярошенко

Интернет-маркетолог. Сертифицированный специалист по Google AdWords, Google Analytics и Яндекс.Директ. Сертифицированный тренер Google в Беларуси.