Gebote

In AdWords gibt es je nach Schwerpunkt Ihres Unternehmens unterschiedliche Möglichkeiten, Gebote für Anzeigen abzugeben.

In der AdWords API werden sämtliche Gebotsparameter über eines oder beide der folgenden Objekte verwaltet:

Bei beiden Objekten können Sie das Feld biddingStrategyType, das Feld biddingScheme oder beide Felder zur Angabe eines Gebotstyps verbinden. Bei biddingScheme können Sie zusätzliche Parameter angeben, die spezifisch für den jeweiligen Gebotstyp sind. Werden beide Felder verwendet, müssen die angegebenen Typen übereinstimmen.

Strategietypen

In der Tabelle unten wird in der Spalte Gültige Kontexte angegeben, ob in einem oder beiden der oben genannten Kontexte ein bestimmter BiddingStrategyType mit dem zugehörigen BiddingScheme-Typ verwendet werden kann:

  • Eine Standardstrategie mit dem Objekt BiddingStrategyConfiguration
  • Eine Portfoliostrategie mit einem Objekt SharedBiddingStrategy
BiddingStrategyType BiddingScheme Beschreibender Name Gültige Kontexte
BUDGET_OPTIMIZER

Nicht mehr verfügbar. Verwenden Sie stattdessen TARGET_SPEND.

BudgetOptimizerBiddingScheme Budget Optimizer Standard
CONVERSION_OPTIMIZER

Nicht mehr verfügbar. Verwenden Sie stattdessen TARGET_CPA.

ConversionOptimizerBiddingScheme Schwerpunkt auf Conversions – CPA-Gebote verwenden Standard
ENHANCED_CPC EnhancedCpcBiddingScheme Auto-optimierter CPC Portfolio
MANUAL_CPC

Ab Version 201802 ist enhancedCpcEnabled standardmäßig auf "true" festgelegt.

ManualCpcBiddingScheme Schwerpunkt auf Klicks – max. CPC-Gebote verwenden Standard
MANUAL_CPM ManualCpmBiddingScheme CPM (Cost-per-1000-Impressions)

Funktioniert ausschließlich mit Kampagnen vom Typ "Nur Displaynetzwerk"

Standard
MAXIMIZE_CONVERSIONS MaximizeConversionsBiddingScheme Conversions maximieren

Funktioniert ausschließlich mit Suchnetzwerk-Kampagnen

Standard
PAGE_ONE_PROMOTED PageOnePromotedBiddingScheme Ausrichtung auf Suchseitenposition Portfolio
TARGET_CPA TargetCpaBiddingScheme Ziel-CPA (Cost-per-Acquisition) – muss Eignungsvoraussetzungen erfüllen Portfolio
Standard
TARGET_OUTRANK_SHARE TargetOutrankShareBiddingScheme Kompetitive Auktionsposition Portfolio
TARGET_ROAS TargetRoasBiddingScheme Ziel-ROAS (Return on Advertising Spend) – muss Eignungsvoraussetzungen erfüllen Portfolio
Standard
TARGET_SPEND

(Nur für Version 201710) enhancedCpcEnabled kann nur für eine Standardstrategie festgelegt werden.

TargetSpendBiddingScheme Klicks maximieren Portfolio
Standard
NONE Spezieller Gebotsstrategietyp, mit dem die Gebotsstrategie für AdGroup und AdGroupCriterion gelöscht werden kann Portfolio
Standard

Fehler treten auf, wenn Sie BiddingStrategyType oder BiddingScheme im falschen Kontext verwenden:

  • Wenn Sie einen Typ oder ein Schema, das nur für eine Portfoliostrategie geeignet ist, im Kontext einer Standardstrategie verwenden, wird der Fehler BiddingErrors mit dem Grund INVALID_ANONYMOUS_BIDDING_STRATEGY_TYPE ausgelöst.
  • Wenn Sie einen Typ oder ein Schema, das nur für eine Standardstrategie geeignet ist, im Kontext einer Portfoliostrategie verwenden, wird ein Fehler BiddingErrors mit dem Grund BIDDING_STRATEGY_NOT_SUPPORTED ausgelöst.

Strategie einer Kampagne festlegen

Standardgebotsstrategien

Wenn Sie für Ihre Kampagne eine Standardgebotsstrategie verwenden möchten, stellen Sie die biddingStrategyConfiguration der Kampagne wie folgt ein:

  • Falls Sie keine weiteren Attribute der Strategie konfigurieren müssen, legen Sie einfach den biddingStrategyType fest.
  • Wenn Sie hingegen zusätzliche Attribute konfigurieren müssen (z. B. enhancedCpcEnabled für eine MANUAL_CPC-Strategie), bestimmen Sie das biddingStrategyScheme der Konfiguration.
  • Legen Sie nicht die biddingStrategyId oder den biddingStrategyName der Konfiguration für die Gebotsstrategie fest.

Portfolio-Gebotsstrategien

Sie haben zwei verschiedene Möglichkeiten, für Ihre Kampagne eine Portfolio-Gebotsstrategie zu verwenden:

  1. Sie verwenden eine vorhandene SharedBiddingStrategy.
  2. Sie erstellen mit BiddingStrategyService eine neue SharedBiddingStrategy und legen deren Parameter fest.

Nachdem Sie eine SharedBiddingStrategy ausgewählt haben, konfigurieren Sie Ihre Kampagne so, dass diese Strategie verwendet wird. Legen Sie hierzu die biddingStrategyConfiguration auf eine Konfiguration fest, bei der die biddingStrategyId auf die id der gemeinsam genutzten Gebotsstrategie eingestellt ist.

Gebotsstrategie wechseln

Sie können die Gebotsstrategie einer Kampagne mit CampaignService mutate() und einem SET operation ändern. Der operand sollte eine Campaign sein, bei der die id auf die ID der Kampagne festgelegt ist. Außerdem sollte die biddingStrategyConfiguration wie im Abschnitt Strategie einer Kampagne festlegen oben beschrieben konfiguriert sein.

Strategieeinstellungen überschreiben

Ziel-CPA auf Anzeigengruppenebene überschreiben

Der targetRoas des TargetRoasBiddingScheme einer standardmäßigen TARGET_ROAS-Strategie kann auf Anzeigengruppenebene überschrieben werden. Legen Sie hierzu die targetRoasOverride der Gebotsstrategie-Konfiguration der Anzeigengruppe fest. Die anderen Felder des Gebotsschemas der Strategie lassen sich nicht überschreiben.

Wenn Sie eine Überschreibung entfernen möchten, legen Sie die targetRoasOverride der BiddingStrategyConfiguration der Anzeigengruppe auf 0 fest.

Falls Sie versuchen, den targetRoas eines Portfolio-TargetRoasBiddingScheme zu überschreiben, wird ein Fehler ausgegeben.

Ziel-CPA auf Anzeigengruppenebene überschreiben

Der targetCpa des TargetCpaBiddingScheme einer TARGET_CPA-Strategie kann auf Anzeigengruppenebene überschrieben werden. Fügen Sie hierzu der Gebotsstrategie-Konfiguration der Anzeigengruppe ein CpaBid hinzu. Die anderen Felder des Gebotsschemas der Strategie lassen sich nicht überschreiben.

Standardgebotsstrategien höherer Ebenen überschreiben

Auf einer niedrigeren Ebene kann nur die Gebotsstrategie festgelegt werden, die auf der höheren Ebene ausgewählt wurde. Beispielsweise wird ein Fehler ausgegeben, wenn Sie auf Anzeigengruppenebene die Strategie MANUAL_CPM festlegen, während auf Kampagnenebene die Strategie MANUAL_CPC ausgewählt wurde.

Sie können die Strategie MANUAL_CPC auf einer niedrigeren Ebene festlegen, wenn es einen anderen MANUAL_CPC auf einer höheren Ebene gibt. In diesem Fall wäre es jedoch besser, das Gebot direkt anzugeben.

Gebote festlegen

Gebote können auf der Ebene der Anzeigengruppe oder des Anzeigengruppenkriteriums festgelegt werden. Ein Kriteriumsgebot hat höhere Priorität als ein Anzeigengruppengebot. Es ist nicht möglich, Gebote auf Kampagnenebene festzulegen.

Mehrere Gebote mit unterschiedlichen Typen können gleichzeitig in einer einzigen BiddingStrategyConfiguration festgelegt werden (z. B. CpcBid und CpmBid). Für Ihre Anzeigen wird jedoch nur das Gebot verwendet, das für den ausgewählten biddingStrategyType relevant ist.

Im folgenden Codebeispiel wird ein mutate-Aufruf verwendet, um ein CPC-Gebot auf Anzeigengruppenebene hinzuzufügen.

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

Gebote entfernen

Sie können ein Gebot aus einer BiddingStrategyConfiguration entfernen, indem Sie das zugehörige Feld bid in das Objekt Money ändern, bei dem microAmount den Wert 0 hat.

Kriterien für Dimensionen im Displaynetzwerk

Für Displaynetzwerk-Anzeigen gibt es Dimensionen, bei denen ein Anzeigengruppengebot festgelegt werden kann. Wenn mehrere Gebote in unterschiedlichen Dimensionen festgelegt werden, lässt sich mit dem Feld contentBidCriterionTypeGroup die Dimension angeben, die für absolute Gebote verwendet werden soll. Für Suchnetzwerk-Anzeigen werden immer Keyword-Gebote verwendet.

Sie können auch eine Gebotsanpassung festlegen, die verwendet wird, wenn das Kriterium nicht in einer absoluten Gebotsdimension liegt. Eine solche Anpassung kann über das Feld bidModifier des BiddableAdGroupCriterion vorgenommen werden.

Gebotsanpassungen

Mit Gebotsanpassungen auf Kampagnen- und Anzeigengruppenebene können Sie die Gebote für bestimmte Kriterien erhöhen oder senken. Dadurch erhalten Sie mehr Kontrolle über Ihre Gebote in AdWords-Kampagnen.

In der AdWords API kann auf Kampagnenebene über CampaignCriterionService und CampaignBidModifierService sowie auf Anzeigengruppenebene über AdGroupBidModifierService auf Anpassungen zugegriffen werden.

Gebotsanpassungen abrufen

Sie können Gebotsanpassungen abrufen, indem Sie die Methode get() oder query() von CampaignCriterionService, AdGroupBidModifierService oder CampaignBidModifierService verwenden. Ähnlich wie bei anderen Diensten kann für die Methode get() ein generischer Selektor verwendet werden, über den Sie Antwortfelder auswählen und die Ergebnissätze filtern können.

Mit dem nachfolgenden Code können alle Gebotsanpassungen für eine Anzeigengruppe abgerufen werden:

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

Gebotsanpassungen hinzufügen, aktualisieren und entfernen

Sie können eine Gebotsanpassung hinzufügen oder ändern, indem Sie die Methode mutate() von CampaignCriterionService, AdGroupBidModifierService oder CampaignBidModifierService verwenden:

  • Mit dem Operator ADD fügen Sie eine neue Gebotsanpassung hinzu.
  • Mit dem Operator SET ändern Sie den Wert einer Gebotsüberschreibung.
  • Mit dem Operator REMOVE lässt sich die Überschreibung einer Gebotsanpassung entfernen.
  • Wenn Sie den Vorgang ADD für CampaignBidModifier, AdGroupBidModifier oder AdGroupCriterion durchführen, wird dieser wie ein SET behandelt.

In diesem Beispiel wird gezeigt, wie Sie eine neue Gebotsanpassung für Mobilgeräte auf Anzeigengruppenebene hinzufügen:

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

Feedback geben zu...