Google Ads Script (JavaScript)
/**
* Goodlabs Google Ads Script: Placement Cleaner
* Schedule: Daily at 04:00
*/
var CONFIG = {
SPREADSHEET_URL: "https://docs.google.com/spreadsheets/d/YOUR_SHEET_ID/edit",
AUTO_EXCLUDE: true,
JUNK_PATTERNS: [
"anonymous.google", "game", "puzzle", "arcade", "kids", "baby",
"cartoon", "lyrics", "apk", "mod", "cheats", "download", "free"
]
};
function main() {
Logger.log("Starting Goodlabs Placement Cleaner...");
var report = AdsApp.report(
"SELECT PlacementUrl, CampaignName, Impressions, Clicks, Cost, Conversions " +
"FROM AUTOMATIC_PLACEMENTS_PERFORMANCE_REPORT " +
"WHERE Impressions > 20 " +
"DURING LAST_14_DAYS"
);
var junkList = [];
var rows = report.rows();
while (rows.hasNext()) {
var row = rows.next();
var url = (row["PlacementUrl"] || "").toLowerCase();
var imps = parseInt(row["Impressions"], 10);
var convs = parseFloat(row["Conversions"].replace(/,/g, ""));
var cost = parseFloat(row["Cost"].replace(/,/g, ""));
var isJunk = false;
for (var i = 0; i < CONFIG.JUNK_PATTERNS.length; i++) {
if (url.indexOf(CONFIG.JUNK_PATTERNS[i]) !== -1) {
isJunk = true;
break;
}
}
if (isJunk && convs === 0) {
junkList.push({ url: url, campaign: row["CampaignName"], cost: cost, imps: imps });
}
}
Logger.log("Found " + junkList.length + " junk placements to exclude.");
}Как это работает
- Запрашивает отчёт по местам размещения. Данные PMax тоже читаются, но что именно можно исключить — см. FAQ.
- Исключает игровые и детские приложения, маркирует сайты с аномальным CTR (> 8% для баннеров КМС) и выявляет MFA-домены.
- Добавляет мусорные площадки в список исключённых мест размещения аккаунта.
Инструкция по установке
- Создайте новый скрипт в разделе Инструменты и настройки > Скрипты.
- Укажите ссылку на Google Таблицу и настройте список стоп-слов.
- Авторизуйте и назначьте ежедневный запуск в 04:00 утра.
Частые вопросы
Работает ли это для Performance Max?
Только как отчёт. Данные по размещениям PMax прочитать можно, но добавлять минус-площадки в кампанию PMax скриптами нельзя — исключения задаются на уровне аккаунта или в интерфейсе.