メインコンテンツまでスキップ

自動ルールとスクリプトの SDK

自動一時停止ルールとユーザースクリプトのコード内で利用できるもののリファレンスです:ad オブジェクトのフィールド、一時停止と再開のための関数、広告を選ぶためのセレクター。すべてのフィールドの説明付きのキャプションは、ルールエディター内 — ad.* キーのリファレンス サイドパネル(名前と説明で検索)でも利用できます。

これは Server SDK です — 訪問者のブラウザで動作する Browser SDK とは異なり、Qubix サーバー上で実行されるコマンドです。Server SDK は同期的です:sqlctx.fetch、state は await や Promise なしで直接値を返します。

ad オブジェクト

自動一時停止ルールでは、1 つの ad オブジェクトを受け取ります — これはチェックの対象となっている広告です。これを通じて、すべてのメトリクスと属性を読みます。利用可能なすべてのフィールドはスコープごとにグループ分けされています。

グループフィールドの接頭辞中身
Adad.spend_24had.roas_24had.primary_countryad.effective_status広告そのもののメトリクスと属性
Creativead.creo_*クリエイティブ別のメトリクス(このクリエイティブを使うすべての広告)
Geoad.geo_*国別のメトリクス
Offerad.offer_*オファーのメトリクスとパラメーター(ペイアウト、キャップ)
Networkad.network_*ネットワーク別のメトリクス
Previous periodad.prev_*前の期間の同じメトリクス(比較用)

メトリクスの完全なリスト、時間枠(_1h_total)、各接頭辞の意味は メトリクスと列 セクションにあります。

注意

存在しないフィールド(ad.something_wrong)にアクセスすると、ルールは即座にエラーで中断します。名前はエディターのリファレンスと照合してください。

一時停止

スコープごとに 3 つの関数があります。広告、広告セット、キャンペーン。

関数アクション
pauseAd(duration, reason?)現在の広告を一時停止
pauseAdset({ adsetId, duration, reason? })広告セットを一時停止
pauseCampaign({ campaignId, duration, reason? })キャンペーンを一時停止

pauseAd では継続時間を文字列として渡すだけで十分です;広告セットとキャンペーンでは、明示的な adsetId / campaignId を持つオブジェクト形式が必須です。

継続時間(duration):

意味
6h / 12h / 24hN 時間の一時停止
next_day_target_geoターゲット国の時間での翌日の始まりまで
next_day_ad_account広告アカウントの時間での翌日の始まりまで
permanent永続的な一時停止
while_matchesルールの条件が成立している間

reason はログに入る任意のコメントです。省略すると、ルール名が代入されます。

再開

関数アクション
activateAd(reason?)現在の広告を再開
activateAdset({ adsetId, reason? })広告セットを再開
activateCampaign({ campaignId, reason? })キャンペーンを再開

隣接する広告

ルールの中で、同じ広告セットやキャンペーンの他の広告を参照できます — たとえば、1 件の広告だけが落ち込んだ場合に広告セット全体を停止するなど。

関数返すもの
getAd(id)ad_id による広告
getAdset()現在の広告の広告セット内のすべての広告
getCampaign()現在の広告のキャンペーン内のすべての広告

また、デバッグ出力のための console.log / console.warn / console.error と、skipNextRules() — この広告の残りのルールをスキップする — も利用できます。

QubixApp セレクター(スクリプト用)

ユーザースクリプトでは QubixApp オブジェクトが利用できます — 条件で広告、広告セット、キャンペーンを選択します。選択された各要素には、独自の統計と一時停止メソッドがあります。

メソッド返す選択
QubixApp.ads()広告
QubixApp.adsets()広告セット
QubixApp.campaigns()キャンペーン

選択メソッド(チェーン可能):

メソッド動作
.withCondition(sql)条件でフィルター
.filter(fn)関数でフィルター
.orderBy(field, dir)ソート('asc' / 'desc'
.withLimit(n)要素数を制限
.get()要素の配列を取得
.first()最初の要素を取得

要素メソッド:

メソッドアクション
.pause({ duration, reason? })一時停止
.activate({ reason? })再開
.getStatsFor(period)時間枠のメトリクス('1h''total'
.getAds()広告セット/キャンペーン内の広告
.getAdsets()キャンペーン内の広告セット

getStatsFor は、選択した時間枠のメトリクスのセットを返します:spendrevenueclicksregsdepsinstallsroascpdcpcclick2regreg2depctri2ri2dc2i

スクリプトコンテキスト

スクリプトでは、追加で ctx オブジェクトが利用できます。

フィールド/メソッド目的
ctx.state.get/set/delete/keys実行間の状態の保持
ctx.fetch(url, opts?)HTTP リクエスト(ホストは許可リストにある必要があります、設定の JavaScript をご覧ください)
ctx.now()現在時刻
ctx.script現在のスクリプトに関する情報
注意

ctx オブジェクト(ctx.fetch を含む)はスクリプトにのみ存在します — 自動一時停止ルールの中では利用 できません。さらにスクリプトでも、ctx.fetch はサーバー上の実際の実行でのみ動作します:ブラウザでのテスト実行ではネットワーク呼び出しが無効なので、実際の実行で確認してください。

共有 state

プライベートな ctx.state に加えて、すべてのスクリプト、ルール、サイトハンドラから同時に参照できる共有ストア ctx.state.global があります。

メソッドアクション
ctx.state.global.get(key)値を読み取る
ctx.state.global.keys()キーの一覧を取得する
ctx.state.global.set(key, value)値を書き込む
ctx.state.global.delete(key)値を削除する

スクリプトやルールはいずれも共有ストアを読み取ることができます。書き込み(set / delete)は、管理者が所有するスクリプトまたはルールからのみ許可されます — それ以外の場合、書き込みはエラーになります。管理者が一度値を書き込み、他の全員が読み取る共有ルックアップテーブルとして便利に使えます。

制限
  • ctx.fetch:デフォルトのタイムアウトは 10 秒(最大 30 秒)、レスポンスは最大 1 MB、1 回の実行あたり最大 20 リクエスト。
  • sql:1 回のクエリで返される行数は最大数千行です — 正確な上限は管理者が設定で決定します。大量データを取得する場合は、クエリ内で集計してください。

正確な制限値は システムJavaScript タブで設定します。

読み取り専用の sql

タグ付きテンプレート sql\SELECT …` は、オーナーの権限の範囲内で読み取り専用のデータクエリを実行します。これは **自動一時停止ルール(Britva)とユーザースクリプトの両方** で利用できます — 対応するシステム設定が有効になっている場合に限ります。ブラウザでのテスト実行では無効です(ctx.fetch と同様)ので、sql` を使うルールやスクリプトはサーバー上の実際の実行で確認してください。

クエリでアクセスできるテーブルと列の完全なリストは sql クエリ用テーブル にあります。

次のステップ