Ставки

В AdWords существует несколько способов назначения ставок. Выбор оптимальной стратегии зависит от специфики и целей вашего бизнеса.

В AdWords API управление всеми параметрами назначения ставок осуществляется с помощью следующих двух объектов:

В обоих этих объектах можно указать тип назначения ставок, используя поля biddingStrategyType и biddingScheme. Поле biddingScheme позволяет определить дополнительные параметры для типа назначения ставок. Если заданы оба поля, их типы должны совпадать.

Типы стратегий

В приведенной ниже таблице, в столбце Допустимые контексты, указано, можно ли использовать этот вариант назначения ставок (BiddingStrategyType) и тип схемы (BiddingScheme) в упомянутых выше контекстах:

  • Стандартная стратегия с объектом BiddingStrategyConfiguration.
  • Пакетная стратегия с объектом SharedBiddingStrategy.
BiddingStrategyType BiddingScheme Описательное название Допустимые контексты
BUDGET_OPTIMIZER

Статистика больше недоступна. Вместо него используйте TARGET_SPEND.

BudgetOptimizerBiddingScheme Оптимизатор бюджета Стандартная
CONVERSION_OPTIMIZER

Статистика больше недоступна. Вместо него используйте TARGET_CPA.

ConversionOptimizerBiddingScheme Плата за конверсии – использовать цену за конверсию Стандартная
ENHANCED_CPC EnhancedCpcBiddingScheme Оптимизатор цены за конверсию Пакетная
MANUAL_CPC

В версии 201802 и более поздних значение enhancedCpcEnabled по умолчанию равно True.

ManualCpcBiddingScheme Плата за клики – использовать максимальные цены за клик Стандартная
MANUAL_CPM ManualCpmBiddingScheme Цена за тысячу показов

Предназначен для кампаний типа "Только контекстно-медийная сеть"

Стандартная
MAXIMIZE_CONVERSIONS MaximizeConversionsBiddingScheme Максимум конверсий

Только в поисковых кампаниях

Стандартная
PAGE_ONE_PROMOTED PageOnePromotedBiddingScheme Целевое положение на странице поиска Пакетная
TARGET_CPA TargetCpaBiddingScheme Целевая цена за конверсию – необходимо соблюдение определенных требований Пакетная
Стандартная
TARGET_OUTRANK_SHARE TargetOutrankShareBiddingScheme Целевой процент выигрышей Пакетная
TARGET_ROAS TargetRoasBiddingScheme Целевая рентабельность инвестиций в рекламу – необходимо соблюдение определенных требований Пакетная
Стандартная
TARGET_SPEND

Параметр enhancedCpcEnabled можно задать только в стандартной стратегии.

TargetSpendBiddingScheme Максимальное количество кликов Пакетная
Стандартная
NONE Специальный тип стратегии назначения ставок. Используется для сброса стратегии назначения ставок на уровне AdGroup и AdGroupCriterion. Пакетная
Стандартная

При попытке использовать BiddingStrategyType или BiddingScheme в неправильном контексте вы получите следующие ошибки:

  • Использование только пакетного типа или схемы в контексте стандартной стратегии: ошибка BiddingErrors с причиной INVALID_ANONYMOUS_BIDDING_STRATEGY_TYPE.
  • Использование только стандартного типа или схемы в контексте пакетной стратегии: ошибка BiddingErrors с причиной BIDDING_STRATEGY_NOT_SUPPORTED.

Как назначить стратегию для кампании

Стандартные стратегии назначения ставок

Чтобы использовать стандартную стратегию назначения ставок, задайте для объекта biddingStrategyConfiguration на уровне кампании следующие настройки:

  • Если вам не нужно настраивать дополнительные атрибуты стратегии, просто укажите ее тип biddingStrategyType.
  • Если вы хотите настроить дополнительные атрибуты стратегии, например enhancedCpcEnabled для стратегии с назначением цены за клик вручную (MANUAL_CPC), задайте схему стратегии biddingStrategyScheme.
  • Не указывайте в настройках идентификатор biddingStrategyId и название biddingStrategyName стратегии.

Пакетные стратегии назначения ставок

Пакетную стратегию назначения ставок для кампании можно назначить двумя способами:

  1. Примените общую стратегию назначения ставок SharedBiddingStrategy.
  2. Используйте службу SharedBiddingStrategy, чтобы создать объект SharedBiddingStrategy и настроить его параметры.

Выбрав общую стратегию назначения ставок SharedBiddingStrategy, включите ее в кампании. Для этого укажите ее идентификатор id в поле biddingStrategyId объекта biddingStrategyConfiguration.

Изменение стратегии назначения ставок

Вы можете изменить стратегию назначения ставок в кампании с помощью операций mutate() и SET operation службы CampaignService. В качестве операнда (operand) используйте объект Campaign, указав в его поле id идентификатор кампании, а biddingStrategyConfiguration настройте, как описано выше.

Как переопределить настройки стратегии

Переопределение целевой цены за конверсию на уровне группы объявлений

Поле targetRoas стандартной стратегии назначения ставок TargetRoasBiddingScheme типа TARGET_ROAS можно переопределить на уровне группы объявлений с помощью поля targetRoasOverride в настройках стратегии. Остальные поля стандартной стратегии переопределить нельзя.

Чтобы удалить переопределение, задайте в поле targetRoasOverride объекта BiddingStrategyConfiguration на уровне группы значение 0.

Попытка переопределить поле targetRoas в схеме TargetRoasBiddingScheme пакетной стратегии приведет к ошибке.

Переопределение целевой цены за конверсию на уровне группы объявлений

Поле targetCpa стратегии назначения ставок TargetCpaBiddingScheme типа TARGET_CPA можно переопределить на уровне группы объявлений, добавив CpaBid в настройки стратегии. Остальные поля этой стратегии переопределить нельзя.

Переопределение стандартных стратегий назначения ставок, назначенных на более высоких уровнях

Стратегии на разных уровнях не могут различаться. Если на уровне группы объявлений задана стратегия MANUAL_CPM, а на уровне кампании – MANUAL_CPC, это приведет к ошибке.

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

Назначение ставок

Ставки можно назначать на уровне группы объявлений и критерия группы объявлений. Ставка для критерия переопределяет значение для группы объявлений. Попытка назначить ставки на уровне кампании приведет к ошибке.

Для одного объекта BiddingStrategyConfiguration настроек стратегии можно одновременно назначить несколько ставок разного типа (например, CpcBid и CpmBid), но использоваться будет только та из них, которая соответствует выбранному на данный момент типу biddingStrategyType.

В примере ниже для добавления цены за клик на уровне группы объявлений используется вызов mutate.

Java

// Get the AdGroupService.
AdGroupServiceInterface adGroupService =
    adWordsServices.get(session, AdGroupServiceInterface.class);

// Create an ad group with the specified ID.
AdGroup adGroup = new AdGroup();
adGroup.setId(adGroupId);
// Update the CPC bid if specified.
if (bidMicroAmount != null) {
  BiddingStrategyConfiguration biddingStrategyConfiguration =
      new BiddingStrategyConfiguration();
  Money cpcBidMoney = new Money();
  cpcBidMoney.setMicroAmount(bidMicroAmount);
  CpcBid cpcBid = new CpcBid();
  cpcBid.setBid(cpcBidMoney);
  biddingStrategyConfiguration.setBids(new Bids[] {cpcBid});
  adGroup.setBiddingStrategyConfiguration(biddingStrategyConfiguration);
}
// Pause the ad group.
adGroup.setStatus(AdGroupStatus.PAUSED);

// Create operations.
AdGroupOperation operation = new AdGroupOperation();
operation.setOperand(adGroup);
operation.setOperator(Operator.SET);

AdGroupOperation[] operations = new AdGroupOperation[] {operation};

// Update ad group.
AdGroupReturnValue result = adGroupService.mutate(operations);

C#

// Create an ad group with the specified ID.
AdGroup adGroup = new AdGroup();
adGroup.id = adGroupId;

// Pause the ad group.
adGroup.status = AdGroupStatus.PAUSED;

// Update the CPC bid if specified.
if (bidMicroAmount != null) {
  BiddingStrategyConfiguration biddingStrategyConfiguration =
      new BiddingStrategyConfiguration();
  Money cpcBidMoney = new Money();
  cpcBidMoney.microAmount = bidMicroAmount.Value;
  CpcBid cpcBid = new CpcBid();
  cpcBid.bid = cpcBidMoney;
  biddingStrategyConfiguration.bids = new Bids[] { cpcBid };
  adGroup.biddingStrategyConfiguration = biddingStrategyConfiguration;
}

// Create the operation.
AdGroupOperation operation = new AdGroupOperation();
operation.@operator = Operator.SET;
operation.operand = adGroup;

try {
  // Update the ad group.
  AdGroupReturnValue retVal = adGroupService.mutate(new AdGroupOperation[] { operation });

Python

# Initialize appropriate service.
ad_group_service = client.GetService('AdGroupService', version='v201802')

# Construct operations and update an ad group.
operations = [{
    'operator': 'SET',
    'operand': {
        'id': ad_group_id,
        'status': 'PAUSED'
    }
}]

if bid_micro_amount:
  operations[0]['operand']['biddingStrategyConfiguration'] = {
      'bids': [{
          'xsi_type': 'CpcBid',
          'bid': {
              'microAmount': bid_micro_amount,
          }
      }]
  }

ad_groups = ad_group_service.mutate(operations)

PHP

$adGroupService = $adWordsServices->get($session, AdGroupService::class);

$operations = [];
// Create ad group with the specified ID.
$adGroup = new AdGroup();
$adGroup->setId($adGroupId);

// Update the CPC bid if specified.
if (!is_null($cpcBidMicroAmount)) {
    $bid = new CpcBid();
    $money = new Money();
    $money->setMicroAmount($cpcBidMicroAmount);
    $bid->setBid($money);
    $biddingStrategyConfiguration = new BiddingStrategyConfiguration();
    $biddingStrategyConfiguration->setBids([$bid]);
    $adGroup->setBiddingStrategyConfiguration($biddingStrategyConfiguration);
}

// Create ad group operation and add it to the list.
$operation = new AdGroupOperation();
$operation->setOperand($adGroup);
$operation->setOperator(Operator::SET);
$operations[] = $operation;

// Update the ad group on the server.
$result = $adGroupService->mutate($operations);

Perl

# Create an ad group with the specified ID.
# Pause the ad group.
my $ad_group = Google::Ads::AdWords::v201802::AdGroup->new({
  id     => $ad_group_id,
  status => "PAUSED"
});

# Update the CPC bid if specified.
if ($cpc_bid_micro_amount) {
  my $bidding_strategy_configuration =
    Google::Ads::AdWords::v201802::BiddingStrategyConfiguration->new({
      bids => [
        Google::Ads::AdWords::v201802::CpcBid->new({
            bid => Google::Ads::AdWords::v201802::Money->new({
                microAmount => $cpc_bid_micro_amount
            }),
          }),
      ]
    });
  $ad_group->set_biddingStrategyConfiguration(
    $bidding_strategy_configuration);
}

# Create operation.
my $operation = Google::Ads::AdWords::v201802::AdGroupOperation->new({
  operand  => $ad_group,
  operator => "SET"
});

# Update ad group.
my $result = $client->AdGroupService()->mutate({operations => [$operation]});

Ruby

ad_group_srv = adwords.service(:AdGroupService, API_VERSION)

# Create an ad group with the specified ID.
ad_group = {
  :status => 'PAUSED',
  :id => ad_group_id
}

# Update the CPC bid if specified.
unless cpc_bid_micro_amount.nil?
  ad_group[:bidding_strategy_configuration] = {
    :bids => [{
      :xsi_type => 'CpcBid',
      :bid => {
        :micro_amount => cpc_bid_micro_amount
      }
    }]
  }
end

operation = {
  :operator => 'SET',
  :operand => ad_group
}

# Update ad group.
response = ad_group_srv.mutate([operation])

VB.NET

' Create an ad group with the specified ID.
Dim adGroup As New AdGroup
adGroup.id = adGroupId

' Pause the ad group.
adGroup.status = AdGroupStatus.PAUSED

' Update the CPC bid if specified.
If bidMicroAmount.HasValue() Then
  Dim biddingStrategyConfiguration As New BiddingStrategyConfiguration()
  Dim cpcBidMoney = New Money()
  cpcBidMoney.microAmount = bidMicroAmount.Value
  Dim cpcBid As New CpcBid()
  cpcBid.bid = cpcBidMoney
  biddingStrategyConfiguration.bids = New Bids() {cpcBid}
  adGroup.biddingStrategyConfiguration = biddingStrategyConfiguration
End If

' Create the operation.
Dim operation As New AdGroupOperation
operation.operator = [Operator].SET
operation.operand = adGroup

Try
  ' Update the ad group.
  Dim retVal As AdGroupReturnValue = adGroupService.mutate(
      New AdGroupOperation() {operation})

Удаление ставок

Чтобы удалить ставку из BiddingStrategyConfiguration, добавьте в поле bid объект Money и присвойте переменной microAmount значение 0.

Параметры критериев для контекстно-медийной сети

У объявлений в контекстно-медийной сети имеется большое число параметров, по которым можно назначать ставку для группы объявлений. Если в разных параметрах заданы разные ставки, в поле contentBidCriterionTypeGroup можно указать параметр, который должен применяться для абсолютных ставок. Для объявлений, которые показываются в поисковой сети, всегда будет использоваться цена за клик для ключевого слова.

Также можно настроить корректировку ставок. Она применяется, когда критерий не относится к параметру назначения абсолютных ставок. Получить ее можно с помощью поля bidModifier объекта BiddableAdGroupCriterion.

Модификаторы ставок

Корректировки ставок на уровне кампании и группы объявлений позволяют повышать или понижать ставки для отдельных критериев.

В AdWords API для доступа к корректировкам на уровне кампании можно использовать службы CampaignCriterionService и CampaignBidModifierService, а на уровне группы объявлений – AdGroupBidModifierService.

Получение корректировок

Чтобы получить корректировки ставок, используйте метод get() или query() службы CampaignCriterionService, AdGroupBidModifierService или CampaignBidModifierService. Как и в случае с другими службами, в методе get() используется стандартный селектор, который позволяет выбирать поля запроса и фильтровать результаты.

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

Java

public static void runExample(AdWordsServicesInterface adWordsServices,
    AdWordsSession session) throws RemoteException {
  // Get the AdGroupBidModifierService.
  AdGroupBidModifierServiceInterface adGroupBidModifierService =
      adWordsServices.get(session, AdGroupBidModifierServiceInterface.class);

  // Create selector.
  Selector selector = new SelectorBuilder()
      .fields(
          AdGroupBidModifierField.CampaignId,
          AdGroupBidModifierField.AdGroupId,
          AdGroupBidModifierField.BidModifier,
          AdGroupBidModifierField.Id)
      .offset(0)
      .limit(PAGE_SIZE)
      .build();

  AdGroupBidModifierPage page = adGroupBidModifierService.get(selector);
  if (page.getEntries() != null) {
    for (AdGroupBidModifier bidModifierResult : page.getEntries()) {
      String bidModifierValue =
          bidModifierResult.getBidModifier() != null
              ? bidModifierResult.getBidModifier().toString()
              : "unset";
      System.out.printf("Campaign ID %d, AdGroup ID %d, Criterion ID %d, "
          + "has ad group level modifier: %s%n",
          bidModifierResult.getCampaignId(),
          bidModifierResult.getAdGroupId(),
          bidModifierResult.getCriterion().getId(),
          bidModifierValue);
    }
  } else {
    System.out.println("No ad group level bid modifiers were found.");
  }
}

C#

public void Run(AdWordsUser user, long campaignId) {
  using (AdGroupBidModifierService adGroupBidModifierService =
      (AdGroupBidModifierService) user.GetService(
          AdWordsService.v201802.AdGroupBidModifierService)) {

    // Get all ad group bid modifiers for the campaign.
    Selector selector = new Selector() {
      fields = new String[] {
      AdGroupBidModifier.Fields.CampaignId, AdGroupBidModifier.Fields.AdGroupId,
      AdGroupBidModifier.Fields.BidModifier, AdGroupBidModifier.Fields.BidModifierSource,
      Criterion.Fields.CriteriaType, Criterion.Fields.Id
    },
      predicates = new Predicate[] {
      Predicate.Equals(AdGroupBidModifier.Fields.CampaignId, campaignId)
    },
      paging = Paging.Default
    };

    AdGroupBidModifierPage page = new AdGroupBidModifierPage();

    try {
      do {
        // Get the campaigns.
        page = adGroupBidModifierService.get(selector);

        // Display the results.
        if (page != null && page.entries != null) {
          int i = selector.paging.startIndex;
          foreach (AdGroupBidModifier adGroupBidModifier in page.entries) {
            string bidModifier = (adGroupBidModifier.bidModifierSpecified) ?
                adGroupBidModifier.bidModifier.ToString() : "UNSET";
            Console.WriteLine("{0}) Campaign ID {1}, AdGroup ID {2}, Criterion ID {3} has " +
                "ad group level modifier: {4} and source = {5}.",
                i + 1, adGroupBidModifier.campaignId,
                adGroupBidModifier.adGroupId, adGroupBidModifier.criterion.id, bidModifier,
                adGroupBidModifier.bidModifierSource);
            i++;
          }
        }
        selector.paging.IncreaseOffset();
      } while (selector.paging.startIndex < page.totalNumEntries);
      Console.WriteLine("Number of adgroup bid modifiers found: {0}", page.totalNumEntries);
    } catch (Exception e) {
      throw new System.ApplicationException("Failed to retrieve adgroup bid modifiers.", e);
    }
  }
}

Python

def main(client):
  # Initialize appropriate service.
  ad_group_bid_modifier_service = client.GetService(
      'AdGroupBidModifierService', version='v201802')

  # Get all ad group bid modifiers for the campaign.
  selector = {
      'fields': ['CampaignId', 'AdGroupId', 'BidModifier', 'Id'],
      'paging': {
          'startIndex': '0',
          'numberResults': str(PAGE_SIZE)
      }
  }

  # Set initial values.
  offset, page = 0, {}
  more_results = True

  while more_results:
    page = ad_group_bid_modifier_service.get(selector)
    if page['entries']:
      for modifier in page['entries']:
        value = (modifier['bidModifier'] if 'bidModifier' in modifier
                 else 'unset')
        print ('Campaign ID %s, AdGroup ID %s, Criterion ID %s has ad group '
               'level modifier: %s' %
               (modifier['campaignId'], modifier['adGroupId'],
                modifier['criterion']['id'], value))

      # Increment values to request the next page.
      offset += PAGE_SIZE
      selector['paging']['startIndex'] = str(offset)
    else:
      print 'No ad group bid modifiers returned.'
    more_results = int(page['totalNumEntries']) > offset

PHP

public static function runExample(
    AdWordsServices $adWordsServices,
    AdWordsSession $session

Perl

sub get_ad_group_bid_modifier {
  my $client = shift;

  # Create selector.
  my $paging = Google::Ads::AdWords::v201802::Paging->new({
      startIndex    => 0,
      numberResults => PAGE_SIZE
  });
  my $selector = Google::Ads::AdWords::v201802::Selector->new({
      fields => ["CampaignId", "AdGroupId", "BidModifier", "Id"],
      paging => $paging
  });

  # Paginate through results.
  Google::Ads::AdWords::Utilities::PageProcessor->new({
      client   => $client,
      service  => $client->AdGroupBidModifierService(),
      selector => $selector
    }
    )->process_entries(
    sub {
      my ($modifier) = @_;
      my $modifier_value = $modifier->get_bidModifier() || "unset";
      printf "Campaign ID %s, AdGroup ID %s, Criterion ID %s has ad group " .
        "level modifier: %s\n", $modifier->get_campaignId(),
        $modifier->get_adGroupId(), $modifier->get_criterion()->get_id(),
        $modifier_value;
    });

  return 1;
}

Ruby

def get_ad_group_bid_modifiers(campaign_id)
  # AdwordsApi::Api will read a config file from ENV['HOME']/adwords_api.yml
  # when called without parameters.
  adwords = AdwordsApi::Api.new

  # To enable logging of SOAP requests, set the log_level value to 'DEBUG' in
  # the configuration file or provide your own logger:
  # adwords.logger = Logger.new('adwords_xml.log')

  bid_modifier_srv = adwords.service(:AdGroupBidModifierService, API_VERSION)

  # Get all ad group bid modifiers for the campaign.
  selector = {
    :fields => ['CampaignId', 'AdGroupId', 'Id', 'BidModifier'],
    :predicates => [
      {:field => 'CampaignId', :operator => 'EQUALS', :values => [campaign_id]}
    ],
    :paging => {
      :start_index => 0,
      :number_results => PAGE_SIZE
    }
  }

  # Set initial values.
  offset, page = 0, {}

  begin
    page = bid_modifier_srv.get(selector)
    if page[:entries]
      page[:entries].each do |modifier|
        value = modifier[:bid_modifier] || 'unset'
        puts ('Campaign ID %d, AdGroup ID %d, Criterion ID %d has ad group ' +
           'level modifier: %s') %
           [modifier[:campaign_id], modifier[:ad_group_id],
            modifier[:criterion][:id], value]
      end
      # Increment values to request the next page.
      offset += PAGE_SIZE
      selector[:paging][:start_index] = offset
    else
      puts 'No ad group level bid overrides returned.'
    end
  end while page[:total_num_entries] > offset
end

VB.NET

Public Sub Run(ByVal user As AdWordsUser, ByVal campaignId As Long)
  ' Get the AdGroupBidModifierService.
  Using adGroupBidModifierService As AdGroupBidModifierService = CType(user.GetService(
      AdWordsService.v201802.AdGroupBidModifierService), AdGroupBidModifierService)

    ' Get all ad group bid modifiers for the campaign.
    Dim selector As New Selector()
    selector.fields = New String() {
      AdGroupBidModifier.Fields.CampaignId, AdGroupBidModifier.Fields.AdGroupId,
      AdGroupBidModifier.Fields.BidModifier, AdGroupBidModifier.Fields.BidModifierSource,
      Criterion.Fields.CriteriaType, Criterion.Fields.Id
    }

    Dim predicate As New Predicate()
    predicate.field = "CampaignId"
    predicate.[operator] = PredicateOperator.EQUALS
    predicate.values = New String() {campaignId.ToString()}
    selector.predicates = New Predicate() {
      Predicate.Equals(AdGroupBidModifier.Fields.CampaignId, campaignId)
    }
    selector.paging = Paging.Default

    Dim page As New AdGroupBidModifierPage()

    Try
      Do
        ' Get the ad group bids.
        page = adGroupBidModifierService.get(selector)

        ' Display the results.
        If (Not page Is Nothing) AndAlso (Not page.entries Is Nothing) Then
          Dim i As Integer = selector.paging.startIndex
          For Each adGroupBidModifier As AdGroupBidModifier In page.entries
            Dim bidModifier As String = ""
            If adGroupBidModifier.bidModifierSpecified Then
              bidModifier = adGroupBidModifier.bidModifier.ToString()
            Else
              bidModifier = "UNSET"
            End If
            Console.WriteLine("{0}) Campaign ID {1}, AdGroup ID {2}, Criterion ID {3} has " &
              "ad group level modifier: {4}, source = {5}.",
              i + 1, adGroupBidModifier.campaignId,
              adGroupBidModifier.adGroupId, adGroupBidModifier.criterion.id,
              bidModifier, adGroupBidModifier.bidModifierSource)
            i = i + 1
          Next
        End If
        selector.paging.IncreaseOffset()
      Loop While selector.paging.startIndex < page.totalNumEntries
      Console.WriteLine("Number of adgroup bid modifiers found: {0}", page.totalNumEntries)
    Catch e As Exception
      Throw New System.ApplicationException("Failed to retrieve adgroup bid modifiers.", e)
    End Try
  End Using

Добавление, изменение и удаление корректировок

Чтобы добавить или изменить корректировку ставки, используйте метод mutate() службы CampaignCriterionService, AdGroupBidModifierService или CampaignBidModifierService.

  • Для добавления нового модификатора ставок используйте оператор ADD.
  • Изменить существующие корректировки ставок можно с помощью оператора SET.
  • Чтобы удалить переопределение модификатора ставок, используйте оператор REMOVE.
  • Если к модификаторам CampaignBidModifier, AdGroupBidModifier или критерию AdGroupCriterion применить операцию ADD, она будет обработана как операция SET.

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

Java

public static void runExample(AdWordsServicesInterface adWordsServices, AdWordsSession session,
    Long adGroupId) throws RemoteException {
  // Get the AdGroupBidModifierService.
  AdGroupBidModifierServiceInterface adGroupBidModifierService =
      adWordsServices.get(session, AdGroupBidModifierServiceInterface.class);

  // Create mobile platform. The ID can be found in the documentation.
  // https://developers.google.com/adwords/api/docs/appendix/platforms
  Platform mobile = new Platform();
  mobile.setId(30001L);

  AdGroupBidModifier adGroupBidModifier = new AdGroupBidModifier();
  adGroupBidModifier.setAdGroupId(adGroupId);
  adGroupBidModifier.setBidModifier(BID_MODIFIER);
  adGroupBidModifier.setCriterion(mobile);

  // Create ADD operation.
  AdGroupBidModifierOperation operation = new AdGroupBidModifierOperation();
  operation.setOperand(adGroupBidModifier);
  // Use 'ADD' to add a new modifier and 'SET' to update an existing one. A
  // modifier can be removed with the 'REMOVE' operator.
  operation.setOperator(Operator.ADD);

  // Update ad group bid modifier.
  AdGroupBidModifierReturnValue result =
      adGroupBidModifierService.mutate(new AdGroupBidModifierOperation[] {operation});
  for (AdGroupBidModifier bidModifierResult : result.getValue()) {
    System.out.printf(
        "Campaign ID %d, ad group ID %d was updated with ad group level modifier: %.4f%n",
        bidModifierResult.getCampaignId(), bidModifierResult.getAdGroupId(),
        bidModifierResult.getBidModifier());
  }
}

C#

public void Run(AdWordsUser user, long adGroupId, double bidModifier) {
  using (AdGroupBidModifierService adGroupBidModifierService =
      (AdGroupBidModifierService) user.GetService(
          AdWordsService.v201802.AdGroupBidModifierService)) {

    // Mobile criterion ID.
    long criterionId = 30001;

    // Create the adgroup bid modifier.
    AdGroupBidModifier adGroupBidModifier = new AdGroupBidModifier();
    adGroupBidModifier.bidModifier = bidModifier;
    adGroupBidModifier.adGroupId = adGroupId;

    Platform platform = new Platform();
    platform.id = criterionId;

    adGroupBidModifier.criterion = platform;

    AdGroupBidModifierOperation operation = new AdGroupBidModifierOperation();
    operation.@operator = Operator.ADD;
    operation.operand = adGroupBidModifier;

    try {
      // Add ad group level mobile bid modifier.
      AdGroupBidModifierReturnValue retval = adGroupBidModifierService.mutate(
          new AdGroupBidModifierOperation[] { operation });

      // Display the results.
      if (retval != null && retval.value != null && retval.value.Length > 0) {
        AdGroupBidModifier newBidModifier = retval.value[0];
        Console.WriteLine("AdGroup ID {0}, Criterion ID {1} was updated with ad group level " +
            "modifier: {2}", newBidModifier.adGroupId, newBidModifier.criterion.id,
            newBidModifier.bidModifier);
      } else {
        Console.WriteLine("No bid modifiers were added to the adgroup.");
      }
    } catch (Exception e) {
      throw new System.ApplicationException("Failed to add bid modifiers to adgroup.", e);
    }
  }
}

Python

def main(client, ad_group_id, bid_modifier):
  # Initialize appropriate service.
  ad_group_bid_modifier_service = client.GetService(
      'AdGroupBidModifierService', version='v201802')

  # Mobile criterion ID.
  criterion_id = '30001'

  # Prepare to add an ad group level override.
  operation = {
      # Use 'ADD' to add a new modifier and 'SET' to update an existing one. A
      # modifier can be removed with the 'REMOVE' operator.
      'operator': 'ADD',
      'operand': {
          'adGroupId': ad_group_id,
          'criterion': {
              'xsi_type': 'Platform',
              'id': criterion_id
          },
          'bidModifier': bid_modifier
      }
  }

  # Add ad group level mobile bid modifier.
  response = ad_group_bid_modifier_service.mutate([operation])
  if response and response['value']:
    modifier = response['value'][0]
    value = modifier['bidModifier'] if 'bidModifier' in modifier else 'unset'
    print ('Campaign ID %s, AdGroup ID %s, Criterion ID %s was updated with '
           'ad group level modifier: %s' %
           (modifier['campaignId'], modifier['adGroupId'],
            modifier['criterion']['id'], value))
  else:
    print 'No modifiers were added.'

PHP

public static function runExample(
    AdWordsServices $adWordsServices,
    AdWordsSession $session,
    $adGroupId,
    $bidModifier

Perl

sub add_ad_group_bid_modifier {
  my $client      = shift;
  my $ad_group_id = shift;

  # Create mobile platform. The ID can be found in the documentation.
  # https://developers.google.com/adwords/api/docs/appendix/platforms
  my $mobile = Google::Ads::AdWords::v201802::Platform->new({id => 30001});

  # Create the bid modifier.
  my $modifier = Google::Ads::AdWords::v201802::AdGroupBidModifier->new({
      adGroupId   => $ad_group_id,
      criterion   => $mobile,
      bidModifier => BID_MODIFIER
  });

  # Create ADD operation.
  my $operation =
    Google::Ads::AdWords::v201802::AdGroupBidModifierOperation->new({
      operator => "ADD",
      operand  => $modifier
    });

  # Update campaign criteria.
  my $result =
    $client->AdGroupBidModifierService()->mutate({operations => [$operation]});

  # Display campaign criteria.
  if ($result->get_value()) {
    foreach my $modifier (@{$result->get_value()}) {
      printf "Ad Group ID '%s', criterion ID '%s', " .
        "and type '%s' was modified with bid %.2f.\n",
        $modifier->get_adGroupId(),
        $modifier->get_criterion()->get_id(),
        $modifier->get_criterion()->get_type(),
        $modifier->get_bidModifier();
    }
  } else {
    print "No ad group bid modifier was added.\n";
  }

  return 1;
}

Ruby

def add_ad_group_bid_modifier(ad_group_id, bid_modifier)
  # AdwordsApi::Api will read a config file from ENV['HOME']/adwords_api.yml
  # when called without parameters.
  adwords = AdwordsApi::Api.new

  # To enable logging of SOAP requests, set the log_level value to 'DEBUG' in
  # the configuration file or provide your own logger:
  # adwords.logger = Logger.new('adwords_xml.log')

  bid_modifier_srv = adwords.service(:AdGroupBidModifierService, API_VERSION)

  # Mobile criterion ID.
  criterion_id = 30001

  # Prepare to add an ad group level override.
  operation = {
    # Use 'ADD' to add a new modifier and 'SET' to update an existing one. A
    # modifier can be removed with the 'REMOVE' operator.
    :operator => 'ADD',
    :operand => {
      :ad_group_id => ad_group_id,
      :criterion => {
        :xsi_type => 'Platform',
        :id => criterion_id
      },
      :bid_modifier => bid_modifier
    }
  }

  # Add ad group level mobile bid modifier.
  response = bid_modifier_srv.mutate([operation])
  if response and response[:value]
    modifier = response[:value].first
    value = modifier[:bid_modifier] || 'unset'
    puts ('Campaign ID %d, AdGroup ID %d, Criterion ID %d was updated with ' +
        'ad group level modifier: %s') %
           [modifier[:campaign_id], modifier[:ad_group_id],
            modifier[:criterion][:id], value]
  else
    puts 'No modifiers were added.'
  end
end

VB.NET

Public Sub Run(ByVal user As AdWordsUser, ByVal adGroupId As Long, ByVal bidModifier As Double)
  Using adGroupBidModifierService As AdGroupBidModifierService = CType(user.GetService(
      AdWordsService.v201802.AdGroupBidModifierService),
          AdGroupBidModifierService)

    ' Mobile criterion ID.
    Dim criterionId As Long = 30001

    ' Create the adgroup bid modifier.
    Dim adGroupBidModifier As New AdGroupBidModifier()
    adGroupBidModifier.bidModifier = bidModifier
    adGroupBidModifier.adGroupId = adGroupId

    Dim platform As New Platform()
    platform.id = criterionId

    adGroupBidModifier.criterion = platform

    Dim operation As New AdGroupBidModifierOperation()
    operation.operator = [Operator].ADD
    operation.operand = adGroupBidModifier

    Try
      ' Add ad group level mobile bid modifier.
      Dim retval As AdGroupBidModifierReturnValue = adGroupBidModifierService.mutate(
        New AdGroupBidModifierOperation() {operation})

      ' Display the results.
      If Not retval Is Nothing AndAlso Not retval.value Is Nothing AndAlso
        retval.value.Length > 0 Then
        Dim newBidModifier As AdGroupBidModifier = retval.value(0)
        Console.WriteLine("AdGroup ID {0}, Criterion ID {1} was updated with ad group " &
          "level modifier: {2}", newBidModifier.adGroupId, newBidModifier.criterion.id,
          newBidModifier.bidModifier)
      Else
        Console.WriteLine("No bid modifiers were added to the adgroup.")
      End If
    Catch e As Exception
      Throw New System.ApplicationException("Failed to add bid modifiers to adgroup.", e)
    End Try
  End Using

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

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