跳到主要内容

脚本示例

针对常见任务的现成代码片段。将其中任意一段复制到编辑器中,根据自身需要调整阈值,并通过 ▶ Run 按钮进行测试。SDK 命令和计划任务的工作方式,详见 编写脚本 章节。

注意

这些示例包含真实操作(pause)。在按计划启用脚本之前,请先在实时数据上进行测试——如有需要,可临时注释掉带有 pause() 的行,只保留 console.log

按低 ROAS 暂停

停止当天花费超过 20 美元、但 ROAS 低于 0.5 的广告。

JavaScript
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' })
}
}

高花费下无入金时暂停

停止当天没有任何一笔入金、但花费已超过该地区平均付款额的广告——也就是说,钱已经花出去了却没有任何结果。

JavaScript
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 中,并在后续运行时跳过它们,以免再次操作同一批广告。

JavaScript
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)
}

排序并限制筛选结果

选取当天花费最高的五条广告,并直接打印到控制台——这是报表和检查的基础。

JavaScript
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())。您可以从一个广告系列获取其下嵌套的广告组和广告。

JavaScript
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' })
}
}
}

下一步