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
Есть вопросы? Пишите в комментариях!



