Lances

O Google AdWords fornece várias opções de lance para os seus anúncios, dependendo do que é mais importante para você e sua empresa.

Na Google AdWords API, todos os parâmetros de lances são gerenciados por meio de pelo menos um dos seguintes objetos:

Com qualquer um dos objetos, é possível usar o campo biddingStrategyType, o campo biddingScheme ou ambos para especificar um tipo de lance. O biddingScheme permite que você defina parâmetros adicionais, específicos ao tipo de lance. Quando os dois campos são especificados, os tipos deles precisam ser compatíveis.

Tipos de estratégia

Na tabela abaixo, a coluna Contextos válidos indica se um determinado BiddingStrategyType e o tipo BiddingScheme associado a ele podem ser usados em um ou nos dois contextos mencionados acima:

  • a estratégia padrão com um objeto BiddingStrategyConfiguration
  • a estratégia de portfólio com um objeto SharedBiddingStrategy
BiddingStrategyType BiddingScheme Nome descritivo Contextos válidos
BUDGET_OPTIMIZER

Não estará mais disponível. Use TARGET_SPEND.

BudgetOptimizerBiddingScheme Otimizador de orçamentos Padrão
CONVERSION_OPTIMIZER

Não estará mais disponível. Use TARGET_CPA.

ConversionOptimizerBiddingScheme Enfoque em conversões – use lances de CPA Padrão
ENHANCED_CPC EnhancedCpcBiddingScheme CPC otimizado Portfólio
MANUAL_CPC

Para a v201802 ou posterior, enhancedCpcEnabled é padronizado como "true".

ManualCpcBiddingScheme Enfoque em cliques – use lances máximos de CPC Padrão
MANUAL_CPM ManualCpmBiddingScheme CPM (custo por mil impressões)

Funciona somente com as campanhas "Apenas na Rede de Display"

Padrão
MAXIMIZE_CONVERSIONS MaximizeConversionsBiddingScheme Maximizar conversões

Funciona apenas com campanhas da rede de pesquisa

Padrão
PAGE_ONE_PROMOTED PageOnePromotedBiddingScheme Definir posição na página de pesquisa Portfólio
TARGET_CPA TargetCpaBiddingScheme Custo por aquisição (CPA) desejado – precisa cumprir os requisitos de qualificação Portfólio
Padrão
TARGET_OUTRANK_SHARE TargetOutrankShareBiddingScheme Parcela de superação desejada Portfólio
TARGET_ROAS TargetRoasBiddingScheme Retorno do investimento em publicidade desejado – precisa cumprir os requisitos de qualificação Portfólio
Padrão
TARGET_SPEND

Somente para a v201710. enhancedCpcEnabled só pode ser definido em uma estratégia padrão.

TargetSpendBiddingScheme Maximizar cliques Portfólio
Padrão
NONE Tipo de estratégia de lances especial usado para limpar a estratégia de lances em AdGroup e AdGroupCriterion. Portfólio
Padrão

Se você tentar usar um BiddingStrategyType ou um BiddingScheme no contexto errado, ocorrerão erros:

  • O uso de um tipo ou esquema somente de portfólio no contexto de uma estratégia padrão gera um erro BiddingErrors com o motivo INVALID_ANONYMOUS_BIDDING_STRATEGY_TYPE.
  • O uso de um tipo ou esquema somente padrão no contexto de uma estratégia de portfólio gera um erro BiddingErrors com o motivo BIDDING_STRATEGY_NOT_SUPPORTED.

Como especificar a estratégia para uma campanha

Estratégias de lance padrão

Para usar uma estratégia de lances padrão na sua campanha, configure a estratégia de lance biddingStrategyConfiguration da seguinte maneira:

  • Se você não precisar configurar atributos adicionais da estratégia, basta definir biddingStrategyType.
  • Se você precisar configurar atributos adicionais da estratégia, como o atributo enhancedCpcEnabled para uma estratégia MANUAL_CPC, defina o biddingStrategyScheme da configuração.
  • Não ajuste a configuração de estratégia de licitação biddingStrategyId ou biddingStrategyName.

Estratégias de lances de portfólio

Para usar uma estratégia de lances de portfólio na sua campanha, há duas opções:

  1. Usar um SharedBiddingStrategy existente.
  2. Usar o BiddingStrategyService para criar uma SharedBiddingStrategy e definir os parâmetros.

Depois de ter escolhido uma SharedBiddingStrategy, configure sua campanha para usá-la ao definir biddingStrategyConfiguration da campanha como uma configuração com biddingStrategyId definido para id da estratégia de lances compartilhada.

Transições de estratégias de lances

Você pode atualizar uma estratégia de lances da campanha usando CampaignService mutate() e SET operation. O operand deve ser uma Campaign com o id definido como o código da campanha e o biddingStrategyConfiguration configurado conforme descrito acima em Como especificar a estratégia para uma campanha.

Como substituir configurações de estratégia

Como substituir o CPA desejado no nível do grupo de anúncios

O targetRoas do TargetRoasBiddingScheme de uma estratégia TARGET_ROAS padrão pode ser substituído no nível do grupo de anúncios. Para isso, basta definir o targetRoasOverride da configuração da estratégia de lances do grupo. Não é possível substituir outros campos do esquema de lances da estratégia.

Para remover uma substituição, defina o targetRoasOverride do BiddingStrategyConfiguration do grupo de anúncios como 0.

A tentativa de substituir o targetRoas de um portfólio TargetRoasBiddingScheme resultará em um erro.

Como substituir o CPA desejado no nível do grupo de anúncios

O targetCpa de um TargetCpaBiddingScheme da estratégia TARGET_CPA pode ser substituído no nível do grupo de anúncios ao adicionar um CpaBid à configuração da estratégia de lances do grupo de anúncios. Não é possível substituir outros campos do esquema de lances da estratégia.

Como substituir estratégias de lances padrão estabelecidas em níveis superiores

Não é possível definir uma estratégia de lances em um nível inferior diferente da estratégia definida em um nível superior. Por exemplo, definir uma estratégia MANUAL_CPM no nível do grupo de anúncios quando existe uma estratégia MANUAL_CPC no nível da campanha gera um erro.

Você pode definir uma estratégia MANUAL_CPC em um nível inferior quando existir outro MANUAL_CPC em um nível superior. No entanto, seria melhor apenas definir o lance diretamente.

Como definir lances

É possível definir lances no nível do grupo de anúncios e do critério do grupo de anúncios. Um lance de critério substituirá um lance de grupo de anúncios. As tentativas de definir lances no nível da campanha falharão.

Vários lances de tipos diferentes podem ser definidos em uma única BiddingStrategyConfiguration simultaneamente (por exemplo, CpcBid e CpmBid), mas somente o lance relevante para o biddingStrategyType selecionado será usado para definir lances nos seus anúncios.

O exemplo de código a seguir usa uma chamada mutate para adicionar um lance de CPC ao nível do grupo de anúncios.

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

CSharp

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

Como remover lances

Para remover um lance de uma BiddingStrategyConfiguration, atualize o campo bid, transformando-o em um objeto Money com o microAmount definido como 0.

Dimensões dos critérios da Rede de Display

Para anúncios exibidos na Rede de Display, há várias dimensões diferentes para as quais é possível definir um lance de grupo de anúncios. Se vários lances forem definidos em dimensões diferentes, o campo contentBidCriterionTypeGroup poderá ser usado para especificar a dimensão que deverá ser usada para lances absolutos. Os anúncios na rede de pesquisa sempre usam lances de palavras-chave.

Você também pode definir um ajuste de lance que será usado quando o critério não estiver em uma dimensão de lance absoluto. Ele pode ser acessado por meio do campo bidModifier do BiddableAdGroupCriterion.

Modificadores de lances

Os ajustes de lance no nível da campanha e do grupo de anúncios proporcionam maior controle sobre seus lances nas campanhas do Google AdWords. Eles oferecem a opção de aumentar ou diminuir os lances para determinados critérios.

Na Google AdWords API, os ajustes no nível da campanha são acessados por meio do CampaignCriterionService e do CampaignBidModifierService, e os ajustes no nível do grupo de anúncios são acessados por meio do AdGroupBidModifierService.

Como recuperar os ajustes de lance

Para recuperar os ajustes de lance existentes, use o método get() ou query() de CampaignCriterionService , AdGroupBidModifierService ou CampaignBidModifierService. Assim como outros serviços, o método get() aceita um seletor genérico que permite selecionar campos de resposta e filtrar o conjunto de resultados.

O código abaixo recupera todos os modificadores de lance de um grupo de anúncios:

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

CSharp

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

Como adicionar, atualizar e remover ajustes de lance

Use o método mutate() de CampaignCriterionService, AdGroupBidModifierService ou CampaignBidModifierService para adicionar ou alterar um ajuste de lance:

  • Para adicionar um novo modificador de lance, use o operador ADD.
  • Para atualizar a substituição de um lance existente para um novo valor, use o operador SET.
  • Para remover a substituição de um modificador de lance, use o operador REMOVE.
  • Executar uma operação de ADD em um CampaignBidModifier, AdGroupBidModifier ou AdGroupCriterion existente fará com que a operação seja tratada como um SET.

Este exemplo demonstra como adicionar um novo ajuste de lance para dispositivos móveis no nível do grupo de anúncios:

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

CSharp

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

Enviar comentários sobre…

Precisa de ajuda? Acesse nossa página de suporte.