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

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 は下書きに似ており、基本のキャンペーンから作成されます。experimentExperimentBuilder で作成します。これにより、テストのさまざまな部分を表す 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();

下書きとは異なり、テストは 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 つの方法があります。

    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 広告の管理画面には、startApplying()startScheduling() が正常に完了すると、それぞれ [適用済み] または [有効] のステータスが表示されます。失敗した場合は [適用できません] または [作成できません] と表示され、クリックするとエラーを確認できます。

プレビュー段階で一部のメソッドが失敗しても、実行後に成功する可能性があります。たとえば、下書きを作成した後などです。

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

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

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

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