キャンペーンの予算

予算は AdWords キャンペーンの費用の管理に使います。このガイドでは AdWords API を使った予算管理の情報を提供し、予算の共有、割り当て、削除や効果のトラッキングなどを詳しく説明します。

予算を共有する

予算は 1 つのキャンペーンに適用するか、複数のキャンペーンで共有することができます。

AdWords API を使って作成した Budget はデフォルトで共有可能な状態です。これを確認するには、BudgetService の API 呼び出しで isExplicitlyShared の値をチェックします。

  • isExplicitlyShared = true: 複数のキャンペーンで予算を共有できる
  • isExplicitlyShared = false: 予算は 1 つのキャンペーンに適用される

明示的に共有している予算は AdWords 管理画面の [共有ライブラリ] に表示されますが、共有されていない予算は関連付けられているキャンペーンの [設定] にしか表示されません。

予算をキャンペーンに割り当てる

予算をキャンペーンに割り当てるには BudgetServiceBudget オブジェクトを作成し、次以降の CampaignService の呼び出しでその予算の ID を使用します。なお、キャンペーンの処理が失敗して予算の処理だけ成功した場合は、孤立した状態の予算(どのキャンペーンにも関連付けられていない予算)がそのまま作成されます。そうした予算は再利用するか削除することをおすすめします。

新しいキャンペーン

新しいキャンペーンを作成したら、下記の Java コードのサンプルのように CampaignService.mutate()ADD オペレーションで budget 属性を Budget オブジェクトに設定します。その際、budgetId は予算の ID に設定してください。サンプルでは isExplicitlyShared がデフォルト値の true のままになっているため、共有予算が作成されます。

// Get the BudgetService.
BudgetServiceInterface budgetService =
    adWordsServices.get(session, BudgetServiceInterface.class);

// Create a budget, which can be shared by multiple campaigns.
Budget sharedBudget = new Budget();
sharedBudget.setName("Interplanetary Cruise #" + System.currentTimeMillis());
Money budgetAmount = new Money();
budgetAmount.setMicroAmount(50000000L);
sharedBudget.setAmount(budgetAmount);
sharedBudget.setDeliveryMethod(BudgetBudgetDeliveryMethod.STANDARD);
BudgetOperation budgetOperation = new BudgetOperation();
budgetOperation.setOperand(sharedBudget);
budgetOperation.setOperator(Operator.ADD);

// Execute the new budget operation and save the assigned budget ID.
Long budgetId =
    budgetService.mutate(new BudgetOperation[] {budgetOperation}).getValue(0).getBudgetId();
Campaign campaign = new Campaign();
campaign.setName("Interplanetary Cruise #" + System.currentTimeMillis());
// Recommendation: Set the campaign to PAUSED when creating it to stop
// the ads from immediately serving. Set to ENABLED once you've added
// targeting and the ads are ready to serve.
campaign.setStatus(CampaignStatus.PAUSED);
campaign.setAdvertisingChannelType(AdvertisingChannelType.SEARCH);

// Set the bidding strategy configuration.
BiddingStrategyConfiguration biddingStrategyConfiguration =
    new BiddingStrategyConfiguration();
biddingStrategyConfiguration.setBiddingStrategyType(BiddingStrategyType.MANUAL_CPC);
campaign.setBiddingStrategyConfiguration(biddingStrategyConfiguration);

// Only the budgetId should be set.
Budget budget = new Budget();
budget.setBudgetId(budgetId);
campaign.setBudget(budget);
CampaignServiceInterface campaignService =
    adWordsServices.get(session, CampaignServiceInterface.class);
CampaignOperation operation = new CampaignOperation();
operation.setOperand(campaign);
operation.setOperator(Operator.ADD);
CampaignOperation[] operations = new CampaignOperation[] {operation};
CampaignReturnValue result = campaignService.mutate(operations);

キャンペーンの予算を置換する

既存のキャンペーンの予算を置換するには、CampaignService.mutate()SET オペレーションを使用してキャンペーンの budget 属性を Budget オブジェクトに設定し、budgetId も既存の予算の ID に設定します(キャンペーンの他の設定項目と一緒に処理できます)。なお、この処理ではキャンペーンに割り当てられている既存の予算が、budgetId で指定された予算に置換されます。キャンペーンには一度に 1 つの予算しか関連付けることができません。

予算とキャンペーンの関連付けを解除する

キャンペーンには常に予算が関連付けられている必要があります。キャンペーンに関連付けられている予算の ID を変更して別の予算に置換すれば、キャンペーンから予算を削除できます。特定の予算をどのキャンペーンが使用しているか確認する方法については、同じ予算を使用しているキャンペーンのリストを取得するをご覧ください。

予算を削除する

キャンペーンと同じように、予算も完全には削除できません。ステータスを REMOVED に設定できるだけです。そのためには、まず ENABLEDPAUSED のキャンペーンでその予算を使用しているものがない状態にしてください。次に、削除する予算の ID を指定して BudgetService.mutate()REMOVE リクエストを送信します。ReferenceCount フィールドの値が 0 より大きい場合は、ENABLEDPAUSED のキャンペーンが依然として予算を使用しています(予算の ReferenceCount フィールドは BudgetService.get() オペレーションの ReferenceCount フィールドか CampaignService.get() オペレーションの BudgetReferenceCount フィールドで取得できます)。

// Retrieve a budget with budget ID of interest
Long budgetId =  Long.parseLong("INSERT_BUDGET_ID_HERE");
Selector selector = new SelectorBuilder()
    .fields(BudgetField.BudgetId, BudgetField.BudgetReferenceCount)
    .orderAscBy(BudgetField.BudgetId)
    .equals(BudgetField.BudgetId, budgetId.toString())
    .build();
// (Code Excluded) Get a Budget object from the result of BudgetService.get
// Remove the budget only if its referenceCount == 0 (no campaigns are using it)
if (budget.getReferenceCount() == 0) {
    BudgetServiceInterface budgetService =
        adWordsServices.get(session, BudgetServiceInterface.class);
    BudgetOperation operation = new BudgetOperation();
    operation.setOperand(budget);
    operation.setOperator(Operator.REMOVE);
    BudgetOperation[] operations = new BudgetOperation[] {operation};
    BudgetReturnValue result = budgetService.mutate(operations);
}

また、1 つのキャンペーンだけで使用されている予算は、そのキャンペーンを削除することで削除できます。そうしたキャンペーンのステータスを REMOVED に設定すると、そのキャンペーンの予算のステータスも自動的に REMOVED に設定されます。

同じ予算を使用しているキャンペーンのリストを取得する

同じ予算を使用しているキャンペーンのリストを取得すると、予算の利用のバランスをとる際に便利です。次のように BudgetId を目的の予算の ID に設定して、CampaignService.get() オペレーションで Id フィールド(他のフィールドも可)をリクエストします。

Long budgetId =  Long.parseLong("INSERT_BUDGET_ID_HERE");
Selector selector = new SelectorBuilder()
    .fields(CampaignField.Id, CampaignField.BudgetId)
    .orderAscBy(CampaignField.Id)
    .equals(CampaignField.BudgetId, budgetId.toString())
    .build();

次の AWQL ステートメントでも同じ結果を得ることができます。

SELECT BudgetId, BudgetName, Amount, IsBudgetExplicitlyShared,
       AssociatedCampaignId, Impressions
FROM BUDGET_PERFORMANCE_REPORT
WHERE BudgetId = <YOUR_BUDGET_ID>

掲載結果のトラッキング

予算の掲載結果レポートを使用して、キャンペーンの予算に基づく掲載結果データを取得できます。このレポートには、予算ごとにデフォルトで集計されるすべての掲載結果データが表示されます。通常、各予算のデータは 1 行に表示されますが、セグメント フィールドを使用している場合は複数行になる場合もあります。詳細についてはセグメントをご覧ください。

制限事項

キャンペーンのテストを実施する場合は、どのキャンペーンとも共有しない専用の予算を設定する必要があります。

一般的なエラー

エラー 説明
BudgetError.CANNOT_UPDATE_BUDGET_TO_IMPLICITLY_SHARED 予算の isExplicitlyShared の値を SET オペレーションで true から false に変更しようとしました。予算を明示的に共有した場合は(isExplicitlyShared = true)、isExplicitlySharedfalse に戻すことはできません。
EntityCountLimitExceeded.ACCOUNT_LIMIT アカウントの予算が最大数に達しました。
CampaignError.CAMPAIGN_CANNOT_USE_SHARED_BUDGET 予算を追加しようとしているキャンペーンではテストが実施されており、その予算はすでに別のキャンペーンで使用されています。
BudgetError.CANNOT_EDIT_SHARED_BUDGET キャンペーンに関連付けられている予算を CampaignService を使って変更しようとしています。予算の変更は BudgetService で行ってください。
BudgetError.BUDGET_IN_USE 有効なキャンペーンや一時停止中のキャンペーンに関連付けられている予算を削除しようとしています。

フィードバックを送信...

ご不明な点がありましたら、Google のサポートページをご覧ください。