Google 広告スクリプトは、キャンペーンの下書きとテストをサポートしています。これらは、 検索ネットワークとディスプレイ ネットワークのキャンペーンへの変更を準備してテストするために使用されます。
このガイドでは、スクリプトで下書きとテストを使用する基本的なワークフローについて説明します。
下書き
下書きは、既存のキャンペーンのクローンです。下書き自体は広告を配信しませんが、元のキャンペーンを変更せずに変更をステージングするために使用できます。 ステージングされた変更は、基本のキャンペーンに適用できます。
下書きの作成
下書きは、既存の基本のキャンペーンから作成します。DraftBuilder
一意の名前を指定します。基本のキャンペーンは、検索キャンペーン、ディスプレイ ネットワーク対応の検索ネットワーク キャンペーン、ディスプレイ キャンペーン(ディスプレイ ネットワークのモバイルアプリ キャンペーンを除く)のいずれかである必要があり、共有予算を設定することはできません。
const campaign = AdsApp.campaigns()
.withCondition(`campaign.name = "${campaignName}"`)
.get()
.next();
const draftBuilder = campaign.newDraftBuilder()
.withName("INSERT_DRAFT_NAME_HERE")
.build();
const draft = draftBuilder.getResult();
DraftBuilder.build() は、スクリプトの一般的なオペレーションである DraftOperation を返します。詳しくは、ビルダーに関するガイドをご覧ください。
draft は、基本のキャンペーン ID と下書き ID の組み合わせによって一意に識別されます。詳しくは、DraftSelector.withIds() をご覧ください。
下書き用キャンペーンのプロビジョニング
draft オブジェクトは、基本のキャンペーンと下書き用キャンペーンを関連付けます。基本のキャンペーンの更新をステージングするには、下書き用キャンペーンを通じて変更を伝播します。
下書き用キャンペーンには、他のキャンペーンと同様に、条件、広告グループ、入札単価、広告など、さまざまな属性を取得して設定するメソッドがあります。
const draftCampaign = draft.getDraftCampaign();
draftCampaign.setAdRotationType("CONVERSION_OPTIMIZE");
draftCampaign.createNegativeKeyword("shoes");
広告ポリシーのチェックは、基本のキャンペーンと同様に、下書き用キャンペーンでも行われます。ポリシーに違反する広告が含まれている下書き用キャンペーンからテストを実行することはできません。
下書きの実行
下書き用キャンペーンをプロビジョニングしたら、次のいずれかを行います。
変更を使用しない場合は、下書きを削除します。 下書きを削除すると元に戻すことはできませんが、Google 広告の管理画面の下書きタブの [すべての下書き] で確認できます。
draft.remove();下書きで行った変更を保持する場合は、変更を適用します。
draft.startApplying();このメソッドは、基本のキャンペーンへの更新の適用プロセスを開始します。そのため、Google 広告の管理画面では下書きのステータスが [適用中...] と表示されます。ただし、このメソッドでは、プロセスが完了したときに通知は送信されません。
変更をテストする場合は、下書きを使用してテストを作成します。
テスト
テストは、元のキャンペーンと並行してカスタマイズ可能なキャンペーンを実行し、指定した割合のトラフィックに広告を表示します。 テストの結果に基づいて、変更を元のキャンペーンに適用したり、テストを独立したキャンペーンに分岐させたり、テスト キャンペーンを破棄したりできます。
テストを作成する
experiment は下書きに似ており、基本のキャンペーンから作成されます。experiment は ExperimentBuilder で作成します。これにより、テストのさまざまな部分を表す 2 つの「テスト群」を含むテストが自動的に作成されます。一方のテスト群(対照群)には基本のキャンペーンが含まれ、もう一方のテスト群(介入群)には新しい下書き用キャンペーンが含まれます。この下書き用キャンペーンは、テストのスケジュールを設定する前にカスタマイズします(前述の下書きの手順に沿って)。
テストを作成する際は、ビルダーで次のすべてを設定してください。
withCampaign- テストのベースとなるキャンペーン。
withTrafficSplitPercent- テスト群に割り当てるトラフィックの割合。50% の場合は
50を指定します。 withStartDate、withEndDate- キャンペーンの開始日と終了日を指定します。
YYYYMMdd形式で指定します。 withType- 使用しているネットワークに応じて、
SEARCH_CUSTOMまたはDISPLAY_CUSTOM。 withSuffix- 介入群キャンペーンの作成時に、その名前に追加される接尾辞を指定します。
withGoals- このテストの目標を指定します。これは、作成時の目標を再確認するためのものです。デフォルト値は
[{metric: 'CLICKS', direction: 'INCREASE'}]にすることをおすすめします。
トラフィック分割の割合によって、基本のキャンペーンの代わりにテスト キャンペーンの広告が表示されるトラフィックの割合が決まります。そのため、各基本のキャンペーンで同時に実行できるテストは 1 つだけです。
const experiment = AdsApp.newExperimentBuilder()
.withCampaign(campaign)
.withTrafficSplitPercent(50)
.withStartDate("20230501")
.withEndDate("20230601")
.withType("SEARCH_CUSTOM")
.withSuffix("experiment")
.withGoals([{metric: 'CLICKS', direction: 'INCREASE'}])
.build();
// The experimentCampaign represents the customizeable draft.
const experimentCampaign = experiment.getExperimentCampaign();
下書きとは異なり、テストは 1 つの ID で一意に識別されます。詳しくは、
ExperimentSelector.withIds() をご覧ください。
テスト キャンペーンのプロビジョニング
draft と同様に、experiment 自体はキャンペーンではありません。基本のキャンペーン、下書き、テスト キャンペーンを関連付けます。テスト キャンペーンのフィールドは変更できますが、次の例外があります。
- name
- ステータス
- 開始日
- 終了日
- 予算
const experimentCampaign = experiment.getExperimentCampaign();
// Will succeed.
experimentCampaign.setAdRotationType("ROTATE_FOREVER");
experimentCampaign.createNegativeKeyword("sneakers");
// Will fail.
experimentCampaign.setName("INSERT_EXPERIMENT_NAME_HERE");
名前、開始日、終了日はテストに変更できます。変更はテスト キャンペーンに伝播されます。
// Will succeed.
experiment.setName("INSERT_EXPERIMENT_NAME_HERE");
// Will succeed if date is acceptable.
const date = "20220601";
experiment.setStartDate(date);
テストを開始するには、experiment.startScheduling() を呼び出します。基本のキャンペーンからすべての設定をコピーする必要があるため、これは非同期プロセスです。
テスト終了後
テストが完了したら、いくつかの選択肢があります。テストを完全に終了することをおすすめします。これにより、広告の配信は停止しますが、テストを操作することはできます。完了 したテストは、削除、適用、移行できます。また、キャンペーンのパフォーマンス統計情報にも引き続きアクセスできます。
experiment.finish();
const stats = experimentCampaign.getStatsFor("INSERT_TIME_PERIOD_HERE");
統計情報に基づいてテストに満足できない場合は、テストを削除できます。テストを削除すると、テスト キャンペーンも削除されます。テストを削除すると元に戻すことはできませんが、Google 広告の管理画面のテストタブの [すべてのテスト] で確認できます。
experiment.remove();テストの結果に満足している場合は、次の 2 つの方法があります。
変更の適用を開始できます。下書きと同様に、プロセスが完了したときに通知は送信されません。
experiment.startApplying();基本のキャンペーンに影響を与えることなく、テスト キャンペーンを独立した完全に機能するキャンペーンとして確立できます。移行と呼ばれるこの プロセスは すぐに完了し、 新しい予算を設定する必要があります。
const budget = AdsApp.budgets() .withCondition(`campaign_budget.id = ${budgetId}`) .get() .next(); experiment.graduate(budget);新しいキャンペーンは基本のキャンペーンと予算を共有できなくなるため、新しい予算が必要になります。移行したキャンペーンは通常のキャンペーンと同様に、すべてのフィールドを変更でき、さらに下書きとテストの基本のキャンペーンとして使用できます。
その他の考慮事項
基本エンティティ
Google 広告スクリプトに下書きとテストが導入されたことで、基本エンティティという概念も導入されました。下書きとテストのキャンペーン、およびそれらのキャンペーン内の広告グループは、元の基本のキャンペーンとは異なります。そのため、Campaign と AdGroup には、基本のキャンペーンと広告グループにアクセスするためのメソッド getBaseCampaign() と getBaseAdGroup() が追加されました。
これらのメソッドは、基本のキャンペーンまたは広告グループによって呼び出された場合、呼び出し元のエンティティを返します。キャンペーンと広告グループ内のエンティティ(キーワードや広告など)にも、このようなメソッドが追加されています。
基本エンティティを追跡しやすくするために、キャンペーンには
isBaseCampaign()、isDraftCampaign()、および
isExperimentCampaign()メソッドが追加されました。
新しい Campaign.draftCampaigns() と
Campaign.experimentCampaigns() メソッドを使用すると、呼び出し元のキャンペーンを基本のキャンペーンとするすべての下書きと
テストのキャンペーンにアクセスできます。
ただし、
CampaignSelector.withCondition() を使用して下書き用キャンペーンを選択することはできません。代わりに AdsApp.drafts() を使用してください。
エラー処理
下書きとテストに関連する次のメソッドは、スクリプトの実行時に処理されますが、非同期で失敗する可能性があります。
Draft.startApplying()Experiment.startApplying()Experiment.startScheduling()
これらのオペレーションが成功したかどうかを確認するまで待つ必要があります。Google 広告の管理画面には、startApplying() と startScheduling() が正常に完了すると、それぞれ [適用済み] または [有効] のステータスが表示されます。失敗した場合は [適用できません] または [作成できません] と表示され、クリックするとエラーを確認できます。
プレビュー段階で一部のメソッドが失敗しても、実行後に成功する可能性があります。たとえば、下書きを作成した後などです。
const draftCampaign = draft.getDraftCampaign();
draftCampaign.createNegativeKeyword("shoes"); // Will fail in preview.
下書き用キャンペーンにすぐにアクセスできないため、プレビュー モードでは失敗します。
同様に、テストを作成してすぐに下書き用キャンペーンを取得しようとすると、下書きが実際に作成されていないため、プレビュー モードでは失敗します。
そのため、スクリプトを実行したら、スクリプトのリストの下にあるログを確認し、プレビュー モードの制限が原因であると思われる場合にのみ、プレビューで失敗したスクリプトを続行してください。