Бюджеты кампаний

С помощью бюджетов можно контролировать затраты на рекламные кампании AdWords. Из этого руководства вы узнаете, как работать с бюджетами в AdWords API: назначать их, удалять, использовать в нескольких кампаниях и отслеживать их эффективность.

Использование бюджетов в нескольких кампаниях

Бюджет может относиться к одной кампании или же быть общим, то есть использоваться сразу в нескольких кампаниях.

Когда вы создаете новый объект Budget через AdWords API, он по умолчанию доступен для использования в нескольких кампаниях. Чтобы в этом убедиться, проверьте значение поля isExplicitlyShared, отправив вызов службе BudgetService:

  • isExplicitlyShared = true означает, что бюджет может использоваться в нескольких кампаниях.
  • isExplicitlyShared = false значит, что бюджет можно использовать только в одной кампании.

Explicitly shared budgets appear in an account's Shared Library in the AdWords user interface, whereas a non–shared budget appears only within its associated campaign's Settings.

Назначение бюджета кампании

Чтобы назначить кампании бюджет, создайте объект Budget с помощью службы BudgetService, а затем используйте полученный идентификатор бюджета в последующих вызовах CampaignService. Имейте в виду, что при сбое в операции с кампанией будет создан "зависший" бюджет (то есть бюджет, который не связан ни с одной кампанией). Мы рекомендуем повторно использовать такие бюджеты или удалить их.

Новая кампания

В операции CampaignService.mutate() ADD укажите для атрибута budget кампании объект Budget с идентификатором бюджета в поле budgetId (см. пример кода на Java ниже). В этом примере создается общий бюджет, так как в поле 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 идентификатор существующего бюджета (а также установив другие нужные вам поля). Учтите, что в результате существующий бюджет, назначенный этой кампании, будет заменен на указанный в поле budgetId.

Отмена связи между бюджетом и кампанией

Кампания всегда должна быть связана с бюджетом. Вы можете удалить бюджет, изменив идентификатор связанного с кампанией бюджета. В результате один бюджет будет заменен на другой. О том, как определить кампании, в которых используется определенный бюджет, читайте в разделе Как получить список кампаний с одним бюджетом ниже.

Удаление бюджета

Сами бюджеты, как и кампании, нельзя удалить – можно только установить для них статус REMOVED. Перед этим следует убедиться, что бюджет не используется ни в одной кампании со статусом ENABLED или PAUSED. Затем отправьте запрос BudgetService.mutate() REMOVE, указав идентификатор бюджета. Если значение в поле ReferenceCount больше 0, значит у вас есть кампании со статусом ENABLED или PAUSED, в которых используется этот бюджет. Поле ReferenceCount бюджета можно получить как поле ReferenceCount в операции BudgetService.get() либо как поле BudgetReferenceCount в операции CampaignService.get().

// 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);
}

Кроме того, вы можете удалить необщий бюджет, который используется всего в одной кампании, удалив ее. Если установить для такой кампании статус REMOVED, статус связанного с ней необщего бюджета также автоматически изменится на REMOVED.

Как получить список кампаний с одним бюджетом

Чтобы равномерно распределить средства, вам может понадобиться список кампаний с одним и тем же бюджетом. Выполните операцию CampaignService.get(), запросив как минимум поле Id с предикатом BudgetId, равным идентификатору нужного бюджета:

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>

Отслеживание эффективности

Статистику по бюджетам можно получать из отчета по эффективности бюджетов. По умолчанию все данные в нем агрегируются на уровне бюджета. Каждому бюджету соответствует одна строка. Если используются поля сегментирования, одному бюджету может соответствовать несколько строк. Подробнее о сегментировании...

Ограничения

У каждой кампании, с которой проводятся эксперименты, должен быть собственный необщий бюджет.

Распространенные ошибки

Ошибка Описание
BudgetError.CANNOT_UPDATE_BUDGET_TO_IMPLICITLY_SHARED Указывает, что вы попытались изменить значение поля isExplicitlyShared бюджета с true на false в операции SET. Сделав бюджет общим (isExplicitlyShared = true), вы уже не можете изменить значение isExplicitlyShared обратно на false.
EntityCountLimitExceeded.ACCOUNT_LIMIT В аккаунте достигнуто максимальное количество бюджетов.
CampaignError.CAMPAIGN_CANNOT_USE_SHARED_BUDGET В кампании, куда вы пытаетесь добавить бюджет, проводятся эксперименты либо бюджет уже используется в какой-либо другой кампании.
BudgetError.CANNOT_EDIT_SHARED_BUDGET Эта ошибка означает, что вы пытаетесь изменить бюджет, связанный с кампанией, с помощью службы CampaignService. Изменять бюджеты можно только с помощью службы BudgetService.
BudgetError.BUDGET_IN_USE Вы пытаетесь удалить бюджет, который связан как минимум с одной активной или приостановленной кампанией.

Оставить отзыв о...

Текущей странице
Нужна помощь? Обратитесь в службу поддержки.