スクリプトの例
よくあるタスク向けの既成スニペットです。いずれかをエディターにコピーし、しきい値を自分用に調整して、▶ 実行 ボタンでテストしてください。SDK コマンドとスケジュールの動作については スクリプトの作成 セクションで扱っています。
注意
これらの例には実際のアクション(pause)が含まれています。スクリプトをスケジュールで有効化する前に、実データでテストしてください — 必要に応じて、pause() のある行を一時的にコメントアウトし、console.log だけを残してください。
低い ROAS で一時停止
1 日で $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' })
}
}
消化が高くデポジットがない場合に一時停止
1 日で 1 件もデポジットがなく、消化はすでにそのジオの平均ペイアウトを超えた広告を停止します — つまり、お金は出ていくが結果がない状態です。
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)
}
選択のソートと制限
1 日で消化が最も多い広告を 5 件取り、単純にコンソールに出力します — レポートやチェックの土台です。
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' })
}
}
}