Примеры скриптов
Готовые сниппеты для частых задач. Скопируйте любой из них в редактор, подстройте пороги под себя и протестируйте кнопкой ▶ Запустить. Как работают команды SDK и расписание — разобрано в разделе Написание скрипта.
В примерах есть реальные действия (pause). Прежде чем включать скрипт по расписанию, протестируйте его на живых данных — при необходимости временно закомментируйте строки с pause() и оставьте только console.log.
Пауза по низкому ROAS
Останавливает объявления, которые за сутки потратили больше $20, но дают ROAS ниже 0.5.
function main() {
const ads = QubixApp.ads()
.withCondition('spend_24h > 20 AND roas_24h < 0.5')
.get()
for (const ad of ads) {
console.log('pause', ad.name, 'roas24h=', ad.roas_24h)
ad.pause({ duration: '24h', reason: 'low roas' })
}
}
Пауза без депозитов при высоком расходе
Останавливает объявления, у которых за сутки нет ни одного депозита, при этом расход уже превысил среднюю выплату по гео — то есть деньги уходят, а результата нет.
function main() {
const ads = QubixApp.ads()
.withCondition('deps_24h = 0 AND spend_24h > geo_avg_payout')
.get()
for (const ad of ads) {
console.log('pause (no deps)', ad.name, 'spend24h=', ad.spend_24h)
ad.pause({ duration: '24h', reason: 'no deposits' })
}
}
Память между запусками
Запоминает обработанные объявления в ctx.state и пропускает их при последующих запусках, чтобы не трогать одни и те же повторно.
function main() {
const seen = ctx.state.get('seen') || []
const ads = QubixApp.ads()
.withCondition('roas_24h < 0.5 AND spend_24h > 20')
.get()
for (const ad of ads) {
if (seen.includes(ad.ad_id)) continue
ad.pause({ duration: '24h', reason: 'low roas' })
seen.push(ad.ad_id)
console.log('paused', ad.name)
}
ctx.state.set('seen', seen)
}
Сортировка и ограничение выборки
Берёт пять объявлений с наибольшим расходом за сутки и просто выводит их в консоль — основа для отчётов и проверок.
function main() {
const top = QubixApp.ads()
.orderBy('spend_24h', 'desc')
.withLimit(5)
.get()
for (const ad of top) {
console.log(ad.name, 'spend24h=', ad.spend_24h, 'roas24h=', ad.roas_24h)
}
}
Работа на уровне кампании
Команды доступны не только для объявлений, но и для адсетов (QubixApp.adsets()) и кампаний (QubixApp.campaigns()). Из кампании можно получить вложенные адсеты и объявления.
function main() {
const campaigns = QubixApp.campaigns()
.withCondition('roas_24h < 0.3')
.get()
for (const c of campaigns) {
console.log('weak campaign', c.name)
for (const ad of c.getAds()) {
ad.pause({ duration: '12h', reason: 'weak campaign' })
}
}
}