UPD: новая версия скрипта здесь. А в этой статье можно почитать при принцип его работы.
Вчера я вел семинар от Google Partners по «Advanced Search» в Минске. Было здорово, весело и вопросы из зала были качественные.
В перерыве, пока мы говорили о скриптах, мне в голову пришла идея: а почему бы не написать скрипт, который автоматически получает список площадок в КМС и те, которые содержат «game», «igry», «resheb» и т.д. добавляет в исключения кампании.
Я озвучил идею, и людям понравилось. Более того, скрипт можно было бы настроить на автоматическое выполнение, к примеру, каждые 7 дней. И тонны мусора из КМС автоматически подчищались бы скриптом.
Больше не нужно было бы сидеть и часами выбирать сотни левых площадок вручную. Даже с фильтрами это мутроная и неприятная работа. А ведь 80-90% площадок можно исключить автоматически по названию домена.
Пацан сказал — пацан сделал
Как и обещал, бесплатно, без регистрации и СМС 🙂 Забирайте и пользуйтесь!
1. Создайте новый скрипт в разделе «Скрипты» и скопируйте туда код (в конце статьи):
2. Настройте автоматический запуск скрипта каждую неделю
3. Добавьте к кампаниям КМС в аккаунте, к которым хотите добавлять исключения, ярлык «PlacementCleaner»
Код скрипта:
/* 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
Есть вопросы? Пишите в комментариях!