Ejemplos de scripts
Fragmentos listos para tareas comunes. Copia cualquiera de ellos en el editor, ajusta los umbrales a tu medida y pruébalo con el botón ▶ Ejecutar. Cómo funcionan los comandos del SDK y la programación se explica en la sección Escribir un script.
Los ejemplos contienen acciones reales (pause). Antes de activar un script en una programación, pruébalo con datos reales — si hace falta, comenta temporalmente las líneas con pause() y deja solo console.log.
Pausa por ROAS bajo
Detiene los anuncios que gastaron más de 20 $ en el día pero dan un ROAS por debajo de 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' })
}
}
Pausa sin depósitos con gasto alto
Detiene los anuncios que no tienen ni un solo depósito en el día, mientras el gasto ya ha superado el payout medio del geo — es decir, sale dinero pero no hay resultado.
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' })
}
}
Memoria entre ejecuciones
Recuerda los anuncios procesados en ctx.state y los omite en las ejecuciones posteriores, para no volver a tocar los mismos.
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)
}
Ordenar y limitar la selección
Toma los cinco anuncios con mayor gasto en el día y simplemente los imprime en la consola — una base para informes y comprobaciones.
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)
}
}
Trabajar a nivel de campaña
Los comandos están disponibles no solo para los anuncios, sino también para los conjuntos de anuncios (QubixApp.adsets()) y las campañas (QubixApp.campaigns()). Desde una campaña puedes obtener los conjuntos de anuncios y anuncios anidados.
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' })
}
}
}