キャンペーンの下書きとウェブテスト

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");

広告ポリシーのチェックは、ベース キャンペーンと同様に、下書きキャンペーンに対しても行われます。ポリシーに違反している広告が含まれている下書き用キャンペーンでは、テストを実行できません。

下書きを実行する

下書きキャンペーンをプロビジョニングした後、次のいずれかを行うことができます。

  1. 変更を使用しない場合は、下書きを削除するだけです。下書きの削除は元に戻せませんが、Google 広告の管理画面の [下書き] タブの [すべての下書き] で引き続き確認できます。

        draft.remove();
    
  2. 下書きで行った変更を保持する場合は、変更を適用します。

        draft.startApplying();
    

    このメソッドは、基本キャンペーンに更新を適用するプロセスを開始します。そのため、Google 広告の管理画面で下書きのステータスが [適用中...] になります。ただし、このメソッドでは、処理が完了したときに通知されません。

  3. 変更をテストする場合は、下書きを使用してテストを作成できます。

テスト

テストを作成する

experiment は下書きに似ており、ベース キャンペーンから作成されます。ExperimentBuilder を使用して experiment を作成します。これにより、テストのさまざまな部分を表す 2 つの「アーム」を含むテストが自動的に作成されます。一方のアーム(対照群)には基本のキャンペーンが含まれ、もう一方のアーム(介入群)には新しい下書きキャンペーンが含まれます。この下書きキャンペーンは、テストをスケジュールする前に(前述の下書きの手順に沿って)カスタマイズします。

テストを構築する際は、ビルダーで次のすべてを設定してください。

withCampaign
テストのベースにするキャンペーン。
withTrafficSplitPercent
トラフィックのどのくらいの割合がテスト群に割り当てられるか。50% の場合は、50 を指定します。
withStartDatewithEndDate
キャンペーンの開始日と終了日を指定します。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();

下書きとは異なり、テストは単一の 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 広告の UI の [テスト] タブの [すべてのテスト] で引き続き確認できます。

        experiment.remove();
    
  • テストの結果に満足している場合は、次の 2 つのオプションがあります。

    1. 変更の適用を開始できます。下書きと同様に、処理が完了しても通知は届きません。

          experiment.startApplying();
      
    2. テスト キャンペーンを、基本のキャンペーンに影響を与えることなく、完全に独立したキャンペーンとして確立できます。このプロセスは「卒業」と呼ばれ、すぐに完了し、新しい予算を設定する必要があります。

          const budget = AdsApp.budgets()
              .withCondition(`campaign_budget.id = ${budgetId}`)
              .get()
              .next();
      
          experiment.graduate(budget);
      

      新しいキャンペーンはベース キャンペーンと予算を共有できなくなるため、新しい予算が必要になります。卒業したキャンペーンは、すべてのフィールドを変更でき、より多くの下書きやテストのベース キャンペーンとして使用できるという点で、通常のキャンペーンと同じです。

その他の考慮事項

基本エンティティ

Google 広告スクリプトに下書きとテストが導入されたことで、基本エンティティという概念も導入されました。下書きキャンペーンとテストキャンペーン、およびそれらの広告グループは、元のベース キャンペーンとは異なります。そのため、CampaignAdGroup に、ベース キャンペーンと広告グループにアクセスするためのメソッド(getBaseCampaign()getBaseAdGroup())が追加されました。

これらのメソッドは、ベース キャンペーンまたは広告グループから呼び出された場合、呼び出し元エンティティを返します。キャンペーンや広告グループ内のエンティティ(キーワードや広告など)にも、このようなメソッドが用意されています。

ベースエンティティを追跡できるように、キャンペーンには isBaseCampaign() メソッド、isDraftCampaign() メソッド、isExperimentCampaign() メソッドが用意されています。

新しい Campaign.draftCampaigns() メソッドと Campaign.experimentCampaigns() メソッドを使用すると、呼び出し元キャンペーンを基本キャンペーンとするすべての下書きキャンペーンとテスト キャンペーンにアクセスできます。ただし、CampaignSelector.withCondition() を使用して下書きキャンペーンを選択することはできません。代わりに AdsApp.drafts() を使用してください。

エラー処理

下書きとテストに関連する次のメソッドは、スクリプトの実行時に処理されますが、非同期で失敗する可能性があります。

  • Draft.startApplying()
  • Experiment.startApplying()
  • Experiment.startScheduling()

これらのオペレーションが成功するかどうかを確認する必要があります。Google 広告の UI には、startApplying()startScheduling() がそれぞれ正常に完了した後、ステータスが [適用済み] または [有効] と表示されます。また、失敗した場合は [適用できません] または [作成できません] と表示され、クリックしてエラーを確認できます。

プレビュー ステージで失敗したメソッドが、実行後に成功することもあります(下書きの作成後など)。

const draftCampaign = draft.getDraftCampaign();
draftCampaign.createNegativeKeyword("shoes"); // Will fail in preview.

下書きキャンペーンにすぐにアクセスできないため、プレビュー モードでは失敗します。

同様に、テストを作成してすぐに下書きキャンペーンを取得しようとすると、下書きが実際に作成されていないため、プレビュー モードで失敗します。

そのため、スクリプトを実行したら、スクリプトのリストの下にあるログを確認し、プレビュー モードの制限が原因であると思われる場合にのみ、プレビューで失敗したスクリプトを続行してください。