Feeddienste

In diesem Leitfaden werden Feeds vorgestellt. Sie bieten eine allgemeine und flexible Möglichkeit, um tabellarische Daten in einem AdWords-Konto zur Verfügung zu stellen und zu verwenden. Einige Beispiele für AdWords-Funktionen, in denen tabellarische Daten eingesetzt werden, sind Anzeigenerweiterungen, Anzeigenanpassungen und dynamisches Remarketing. In diesem Leitfaden wird mit Sitelink-Erweiterungen die Verwendung von Feeddiensten veranschaulicht. Der Vorgang ist jedoch analog für andere Arten von tabellarischen Daten, für die lediglich andere Platzhaltertypen verwendet werden.

In diesem Leitfaden sind die Codebeispiele in Java programmiert. Codebeispiele in anderen Programmiersprachen finden Sie unter Codebeispiele.

Kundenszenario

Angenommen, Sie sind Werbetreibender und möchten mit AdWords mehr Besucher auf Ihre Website bringen. Damit Nutzer schneller zu bestimmten Bereichen Ihrer Website gelangen, möchten Sie Anzeigen mit Sitelinks ausliefern.

Hier sind einige Details zu den Sitelinks, die unterhalb Ihrer Anzeigen zu sehen sein sollen:

Sitelink-Name Finale Sitelink-URLs
Startseite http://www.example.com
Filialsuche http://www.example.com/locations
Sonderangebote http://www.example.com/discounts
Kundendienst http://www.example.com/support
Produkte http://www.example.com/prods
Über uns http://www.example.com/about

Die Daten sind tabellarisch aufgebaut: Jede Spalte ist eine Sitelink-Property und in jeder Zeile sind Werte für einen Sitelink enthalten.

Feeddienste

Zum Erstellen und Verwalten von Feeds gibt es mehrere zusammenhängende Dienste:

FeedService
Mit diesem Dienst wird eine Beschreibung des Formats der tabellarischen Daten für AdWords erstellt: ein Name oder Titel für Ihren Feed (Tabelle) sowie die Namen und Typen der Spalten.
FeedItemService
Mit diesem Dienst werden dem Feed Daten hinzugefügt. Jedes Feedelement stellt eine Zeile in der Tabelle dar.
FeedMappingService
Mit diesem Dienst wird angegeben, wie der Feed die Spalten Ihrer Tabelle den Feldern einer bestimmten AdWords-Funktion zugeordnet wird. In diesem Leitfaden wird veranschaulicht, wie Sie einen Feed so zuordnen, dass er für Sitelinks verwendet werden kann.
CustomerFeedService
Mit diesem Dienst wird Ihr Feed für ein komplettes Kundenkonto aktiviert (alle Kampagnen und Anzeigengruppen).
CampaignFeedService
Mit diesem Dienst wird Ihr Feed für eine komplette Kampagne aktiviert (alle Anzeigengruppen innerhalb dieser Kampagne).
AdGroupFeedService
Mit diesem Dienst wird Ihr Feed für eine bestimmte Anzeigengruppe aktiviert.

Java-Codebeispiel

Das Codebeispiel unten zeigt, wie Sie unter Verwendung der Java-Clientbibliothek einen Sitelinks-Feed hinzufügen und mit einer Kampagne verknüpfen. Das komplette Codebeispiel finden Sie unter Codebeispiele.

Das Hinzufügen von Sitelinks zu einer Kampagne umfasst die folgenden Schritte:

  1. Feed erstellen
  2. Daten für Feed bereitstellen
  3. Feed den Sitelinks-Platzhalterfeldern zuordnen
  4. Feed mit einem Kunden, einer Kampagne oder einer Anzeigengruppe verknüpfen
  5. Planen, wann Feedelemente aktiviert werden sollen (optional)
  6. Anzeigen auf bestimmte Kampagnen, Anzeigengruppe oder Kriterien ausrichten (optional)


1. Feed erstellen

Mit dem FeedService-Objekt wird eine Beschreibung des Formats der hochzuladenden Daten erstellt. Darin enthalten sind ein Name oder Titel für den Feed (Tabelle) und eine Gruppe von Feedattributen (Spalten). Jedes Feedattribut hat einen Namen (Spaltenüberschrift) und einem Typ.

Im Beispielcode wird das FeedService-Objekt für createSiteLinksFeed() verwendet, um einen Feed mit FeedAttribute-Instanzen zu erstellen, die den Sitelinks entsprechen:

private static void createSiteLinksFeed(
    AdWordsServicesInterface adWordsServices,
    AdWordsSession session,
    SiteLinksDataHolder siteLinksData,
    String feedName)
    throws RemoteException {
  // Get the FeedService.
  FeedServiceInterface feedService = adWordsServices.get(session, FeedServiceInterface.class);

  // Create attributes.
  FeedAttribute textAttribute = new FeedAttribute();
  textAttribute.setType(FeedAttributeType.STRING);
  textAttribute.setName("Link Text");
  FeedAttribute finalUrlAttribute = new FeedAttribute();
  finalUrlAttribute.setType(FeedAttributeType.URL_LIST);
  finalUrlAttribute.setName("Link Final URLs");
  FeedAttribute line2Attribute = new FeedAttribute();
  line2Attribute.setType(FeedAttributeType.STRING);
  line2Attribute.setName("Line 2");
  FeedAttribute line3Attribute = new FeedAttribute();
  line3Attribute.setType(FeedAttributeType.STRING);
  line3Attribute.setName("Line 3");

  // Create the feed.
  Feed siteLinksFeed = new Feed();
  siteLinksFeed.setName(feedName);
  siteLinksFeed.setAttributes(
      new FeedAttribute[] {textAttribute, finalUrlAttribute, line2Attribute, line3Attribute});
  siteLinksFeed.setOrigin(FeedOrigin.USER);

  // Create operation.
  FeedOperation operation = new FeedOperation();
  operation.setOperand(siteLinksFeed);
  operation.setOperator(Operator.ADD);

  // Add the feed.
  FeedReturnValue result = feedService.mutate(new FeedOperation[] {operation});

  Feed savedFeed = result.getValue()[0];
  siteLinksData.siteLinksFeedId = savedFeed.getId();
  FeedAttribute[] savedAttributes = savedFeed.getAttributes();
  siteLinksData.linkTextFeedAttributeId = savedAttributes[0].getId();
  siteLinksData.linkFinalUrlFeedAttributeId = savedAttributes[1].getId();
  siteLinksData.line2FeedAttributeId = savedAttributes[2].getId();
  siteLinksData.line3FeedAttributeId = savedAttributes[3].getId();
  System.out.printf("Feed with name '%s' and ID %d with linkTextAttributeId %d"
      + " and linkFinalUrlAttributeId %d and line2AttributeId %d"
      + " and line3AttributeId %d was created.%n",
      savedFeed.getName(),
      savedFeed.getId(),
      savedAttributes[0].getId(),
      savedAttributes[1].getId(),
      savedAttributes[2].getId(),
      savedAttributes[3].getId());
}

Um die tabellarischen Daten für Sitelinks zu beschreiben, wird von der Methode ein Feed mit den folgenden Feedattributen erstellt:

  • Linktext
  • Finale URLs des Links
  • Zeile 1
  • Zeile 2
  • Zeile 3

Wir legen einen Feednamen und einen Feedursprung von FeedOrigin.USER fest, um anzugeben, dass die Feedelemente vom Werbetreibenden gefüllt werden (und nicht über AdWords).

Durch Aufrufen des Vorgangs "mutate" für den FeedService wird der Feed erstellt. Nachdem der Feed erfolgreich hinzugefügt wurde, gibt FeedService die Feed-ID und alle Feedattribut-IDs zurück. Diese IDs müssen gespeichert werden, damit sie später mit anderen Diensten verwendet werden können. Zur Vereinfachung wird in unserem Beispiel angenommen, dass ein Objekt namens siteLinksData vom Typ SiteLinksDataHolder erstellt wurde und die zur Aufnahme der IDs geeigneten Felder enthält. Dieses Objekt wird in nachfolgenden Schritten verwendet, um die IDs abzurufen. Sie können ein ähnliches Objekt in Ihrer Implementierungssprache erstellen.

Unser Feed hat genau die für Sitelinks erforderliche Anzahl von Spalten. Sie können jedoch auch einen Feed mit mehr Spalten erstellen, wobei nur einige von der AdWords-Funktion benötigt werden. Dies kann beispielsweise hilfreich sein, wenn Sie die Werte in den zusätzlichen Spalten verwenden möchten, um mithilfe einer Abgleichfunktion zu filtern, welche Feedelemente (Zeilen) für welche Kampagne oder Anzeigengruppe gelten.

2. Daten für Feed bereitstellen

Nachdem eine Beschreibung des Formats der Daten für AdWords erstellt wurde, können die Sitelink-Daten durch Hinzufügen von Feedelementen (Zeilen) mit dem FeedItemService-Objekt bereitgestellt werden.

Zuerst werden mit newSiteLinkFeedItemAddOperation() Feedelemente erstellt. In dieser Helfermethode werden Informationen zu einem Sitelink sowie die IDs der Feedattribute verwendet, um ein neues Feedelement zu füllen. Das neue Feedelement wird dann in eine ADD-Operation eingebunden und zurückgegeben.

Ein FeedItem (Feedelement) wird erstellt, indem eine Tabelle mit dem folgenden Aufbau verwendet wird: Jede Zeile besteht aus mehreren Zellen und jede Zelle befindet sich in einer bestimmten Spalte und enthält einen Wert (Inhalt). Entsprechend besteht ein FeedItem (Zeile) aus mehreren FeedItemAttributeValue-Instanzen (Zellen) und jeder FeedItemAttributeValue (Zelle) enthält die ID eines FeedAttribute (die Spalte, in der sich die Zelle befindet) sowie einen stringValue (der Inhalt der Zelle, falls es sich um einen String handelt).

private static FeedItemOperation newSiteLinkFeedItemAddOperation(
    SiteLinksDataHolder siteLinksData, String text, String finalUrl, String line2, String line3) {
  return newSiteLinkFeedItemAddOperation(siteLinksData, text, finalUrl, line2, line3, null);
}

private static FeedItemOperation newSiteLinkFeedItemAddOperation(
    SiteLinksDataHolder siteLinksData, String text, String finalUrl, String line2, String line3,
    Long locationId) {
  // Create the FeedItemAttributeValues for our text values.
  FeedItemAttributeValue linkTextAttributeValue = new FeedItemAttributeValue();
  linkTextAttributeValue.setFeedAttributeId(siteLinksData.linkTextFeedAttributeId);
  linkTextAttributeValue.setStringValue(text);
  FeedItemAttributeValue linkFinalUrlAttributeValue = new FeedItemAttributeValue();
  linkFinalUrlAttributeValue.setFeedAttributeId(siteLinksData.linkFinalUrlFeedAttributeId);
  linkFinalUrlAttributeValue.setStringValues(new String[] {finalUrl});
  FeedItemAttributeValue line2TextAttributeValue = new FeedItemAttributeValue();
  line2TextAttributeValue.setFeedAttributeId(siteLinksData.line2FeedAttributeId);
  line2TextAttributeValue.setStringValue(line2);
  FeedItemAttributeValue line3TextAttributeValue = new FeedItemAttributeValue();
  line3TextAttributeValue.setFeedAttributeId(siteLinksData.line3FeedAttributeId);
  line3TextAttributeValue.setStringValue(line3);

  // Create the feed item and operation.
  FeedItem item = new FeedItem();
  item.setFeedId(siteLinksData.siteLinksFeedId);
  item.setAttributeValues(new FeedItemAttributeValue[] {linkTextAttributeValue,
      linkFinalUrlAttributeValue, line2TextAttributeValue, line3TextAttributeValue});

  // OPTIONAL: Use geographical targeting on a feed item.
  // IDs can be found in the documentation or retrieved with the
  // LocationCriterionService.
  if (locationId != null) {
    Location location = new Location();
    location.setId(locationId);
    item.setGeoTargeting(location);
    // OPTIONAL: Restrict targeting only to people physically within the location.
    FeedItemGeoRestriction geoTargetingRestriction = new FeedItemGeoRestriction();
    geoTargetingRestriction.setGeoRestriction(GeoRestriction.LOCATION_OF_PRESENCE);
    item.setGeoTargetingRestriction(geoTargetingRestriction);
  }

  // Optional: use item.setStartTime() and item.setEndTime() to specify the
  // time period for the feed to deliver.  The example below will make the feed
  // start now and stop in one month.
  // Make sure you specify the DateTime in the customer's time zone.  You can
  // retrieve this from customer.getDateTimeZone().
  //   item.setStartTime(new DateTime(customerTimeZone).toString("yyyyMMdd HHmmss"));
  //   item.setEndTime(new DateTime(customerTimeZone).plusMonths(1).toString("yyyyMMdd HHmmss"));

  // Optional: use item.setScheduling() to specify time and days of the week for feed to deliver.
  FeedItemOperation operation = new FeedItemOperation();
  operation.setOperand(item);
  operation.setOperator(Operator.ADD);
  return operation;
}

Als Nächstes definieren wir die Methode createSiteLinksFeedItems(), mit der alle Feedelemente erstellt werden, und die Feedelementoperationen, in denen diese enthalten sind. Außerdem ruft sie die Helfermethode mit den verschiedenen Informationen für jeden zu erstellenden Sitelink auf.

Die vom mutate()-Aufruf zurückgegebenen Feedelemente enthalten IDs, die wir zur späteren Verwendung in siteLinksData speichern. Auch hier wird wieder angenommen, dass dieses Objekt bereits erstellt wurde und die zur Aufnahme der IDs geeigneten Felder enthält.

private static void createSiteLinksFeedItems(AdWordsServicesInterface adWordsServices,
    AdWordsSession session, SiteLinksDataHolder siteLinksData) throws RemoteException {
  // Get the FeedItemService.
  FeedItemServiceInterface feedItemService =
      adWordsServices.get(session, FeedItemServiceInterface.class);

  // Create operations to add FeedItems.
  FeedItemOperation home = newSiteLinkFeedItemAddOperation(siteLinksData, "Home",
      "http://www.example.com", "Home line 2", "Home line 3");
  FeedItemOperation stores = newSiteLinkFeedItemAddOperation(siteLinksData, "Stores",
      "http://www.example.com/stores", "Stores line 2", "Stores line 3");
  FeedItemOperation onSale = newSiteLinkFeedItemAddOperation(siteLinksData, "On Sale",
      "http://www.example.com/sale", "On Sale line 2", "On Sale line 3");
  FeedItemOperation support = newSiteLinkFeedItemAddOperation(siteLinksData, "Support",
      "http://www.example.com/support", "Support line 2", "Support line 3");
  FeedItemOperation products = newSiteLinkFeedItemAddOperation(siteLinksData, "Products",
      "http://www.example.com/prods", "Products line 2", "Products line 3");
  // This site link is using geographical targeting by specifying the
  // criterion ID for California.
  FeedItemOperation aboutUs = newSiteLinkFeedItemAddOperation(siteLinksData, "About Us",
      "http://www.example.com/about", "About Us line 2", "About Us line 3", 21137L);

  FeedItemOperation[] operations =
      new FeedItemOperation[] {home, stores, onSale, support, products, aboutUs};

  FeedItemReturnValue result = feedItemService.mutate(operations);
  for (FeedItem item : result.getValue()) {
    System.out.printf("FeedItem with feedItemId %d was added.%n", item.getFeedItemId());
    siteLinksData.siteLinkFeedItemIds.add(item.getFeedItemId());
  }
}

3. Zu Platzhaltern zuordnen

Für jede unterstützte AdWords-Funktion, die tabellarische Daten verwendet, gibt es einen Platzhaltertyp, der die Felder und Datentypen angibt, die von dieser Funktion benötigt werden. Mit FeedMappingService wird einem Feed ein Platzhaltertyp zugeordnet und angegeben, wie der Feed verwendet werden soll. Außerdem werden einige Feedattribute (Spalten) den Platzhalterfeldern zugeordnet, damit klar ist, wie diese Feedattribute für diese AdWords-Funktion interpretiert werden sollen.

// See the Placeholder reference page for a list of all the placeholder types and fields.
// https://developers.google.com/adwords/api/docs/appendix/placeholders
private static final int PLACEHOLDER_SITELINKS = 1;

// See the Placeholder reference page for a list of all the placeholder types and fields.
// https://developers.google.com/adwords/api/docs/appendix/placeholders
private static final int PLACEHOLDER_FIELD_SITELINK_LINK_TEXT = 1;
private static final int PLACEHOLDER_FIELD_SITELINK_FINAL_URL = 5;
private static final int PLACEHOLDER_FIELD_LINE_2_TEXT = 3;
private static final int PLACEHOLDER_FIELD_LINE_3_TEXT = 4;

private static void createSiteLinksFeedMapping(AdWordsServicesInterface adWordsServices,
    AdWordsSession session, SiteLinksDataHolder siteLinksData) throws RemoteException {
  // Get the FeedItemService.
  FeedMappingServiceInterface feedMappingService =
      adWordsServices.get(session, FeedMappingServiceInterface.class);

  // Map the FeedAttributeIds to the fieldId constants.
  AttributeFieldMapping linkTextFieldMapping = new AttributeFieldMapping();
  linkTextFieldMapping.setFeedAttributeId(siteLinksData.linkTextFeedAttributeId);
  linkTextFieldMapping.setFieldId(PLACEHOLDER_FIELD_SITELINK_LINK_TEXT);
  AttributeFieldMapping linkFinalUrlFieldMapping = new AttributeFieldMapping();
  linkFinalUrlFieldMapping.setFeedAttributeId(siteLinksData.linkFinalUrlFeedAttributeId);
  linkFinalUrlFieldMapping.setFieldId(PLACEHOLDER_FIELD_SITELINK_FINAL_URL);
  AttributeFieldMapping line2FieldMapping = new AttributeFieldMapping();
  line2FieldMapping.setFeedAttributeId(siteLinksData.line2FeedAttributeId);
  line2FieldMapping.setFieldId(PLACEHOLDER_FIELD_LINE_2_TEXT);
  AttributeFieldMapping line3FieldMapping = new AttributeFieldMapping();
  line3FieldMapping.setFeedAttributeId(siteLinksData.line3FeedAttributeId);
  line3FieldMapping.setFieldId(PLACEHOLDER_FIELD_LINE_3_TEXT);

  // Create the FeedMapping and operation.
  FeedMapping feedMapping = new FeedMapping();
  feedMapping.setPlaceholderType(PLACEHOLDER_SITELINKS);
  feedMapping.setFeedId(siteLinksData.siteLinksFeedId);
  feedMapping.setAttributeFieldMappings(new AttributeFieldMapping[] {linkTextFieldMapping,
      linkFinalUrlFieldMapping, line2FieldMapping, line3FieldMapping});
  FeedMappingOperation operation = new FeedMappingOperation();
  operation.setOperand(feedMapping);
  operation.setOperator(Operator.ADD);

  // Save the field mapping.
  FeedMappingReturnValue result =
      feedMappingService.mutate(new FeedMappingOperation[] {operation});
  for (FeedMapping savedFeedMapping : result.getValue()) {
    System.out.printf(
        "Feed mapping with ID %d and placeholderType %d was saved for feed with ID %d.%n",
        savedFeedMapping.getFeedMappingId(), savedFeedMapping.getPlaceholderType(),
        savedFeedMapping.getFeedId());
  }
}

Im Beispiel wird mit dieser Methode der Feed für die Verwendung mit Sitelinks konfiguriert. Dazu wird ein Platzhaltertyp für FeedMapping auf die Konstante PLACEHOLDER_SITELINKS festgelegt. Diese Konstante hat den Wert 1. Außerdem werden von dieser Methode die Feedattribute den für Sitelinks erforderlichen Platzhalterfeldern zugeordnet. Durch diese Zuordnung erkennt AdWords, welche Feedattribute (Spalten) welchen Eigenschaften von Sitelinks entsprechen.

Nicht alle Feedattribute müssen einem Platzhalterfeld zugeordnet werden. Wie bereits erwähnt, kann ein Feed mehr Feedattribute haben, als für die AdWords-Funktion erforderlich sind. Diese zusätzlichen Feedattribute können beispielsweise nützlich sein, um die Feedelemente mithilfe einer Abgleichfunktion zu filtern.

Derselbe Feed kann in mehr als einem FeedMapping verwendet werden. Dies kann nützlich sein, wenn mehrere AdWords-Funktionen ähnliche tabellarische Daten benötigen.

4. Feed mit einem Kunden, einer Kampagne oder einer Anzeigengruppe verknüpfen

Jetzt kann der Feed für Sitelinks verwendet werden. In einem letzten Schritt wird der Feed mit einem Kunden (CustomerFeedService), einer Kampagne (CampaignFeedService) oder einer Anzeigengruppe (AdGroupFeedService) verknüpft, damit die Sitelinks in den angegebenen Anzeigen aktiviert werden können.

Ob Sie einen Feed mit einem Kunden, einer Kampagne oder einer Anzeigengruppe verknüpfen, hängt von den Daten in Ihrem Feed und dem Umfang der gewünschten Kontrolle ab. Wenn beispielsweise bei Sitelinks alle Anzeigengruppen in einer Kampagne dieselben Sitelinks enthalten sollen, können Sie den Feed mit der Kampagne verknüpfen. Falls Sie Sitelinks hingegen in jeder Kampagne verwenden möchten, können Sie den Feed mit dem Konto verknüpfen. Wenn unterschiedliche Anzeigengruppen in derselben Kampagne unterschiedliche Sitelinks enthalten sollen, müssen Sie den Feed mit den jeweiligen Anzeigengruppen separat verknüpfen.

Beim Verknüpfen eines Feeds können Sie filtern, welche Feedelemente (Zeilen) tatsächlich für diesen Kunden, diese Kampagne oder diese Anzeigengruppe aktiviert sind. So könnten Sie beispielsweise einen einzelnen Feed so aufbauen, dass bestimmte Feedelemente (über einen Filter) für eine Kampagne und andere Feedelemente (über einen weiteren Filter) für eine andere Kampagne verwendet werden. Filter werden durch die Bereitstellung einer Abgleichfunktion angewendet, die für jedes Feedelement ausgewertet wird.

private static void createSiteLinksCampaignFeed(
    AdWordsServicesInterface adWordsServices,
    AdWordsSession session,
    SiteLinksDataHolder siteLinksData,
    Long campaignId)
    throws RemoteException {
  // Get the CampaignFeedService.
  CampaignFeedServiceInterface campaignFeedService =
      adWordsServices.get(session, CampaignFeedServiceInterface.class);

  // Construct a matching function that associates the sitelink feed items to the campaign, and
  // sets the device preference to mobile. See the matching function guide at
  // https://developers.google.com/adwords/api/docs/guides/feed-matching-functions
  // for more details.
  String matchingFunctionString = String.format(
      "AND( IN(FEED_ITEM_ID, {%s}), EQUALS(CONTEXT.DEVICE, 'Mobile') )",
      Joiner.on(',').join(siteLinksData.siteLinkFeedItemIds));

  CampaignFeed campaignFeed = new CampaignFeed();
  campaignFeed.setFeedId(siteLinksData.siteLinksFeedId);
  campaignFeed.setCampaignId(campaignId);

  Function matchingFunction = new Function();
  matchingFunction.setFunctionString(matchingFunctionString);

  campaignFeed.setMatchingFunction(matchingFunction);
  // Specifying placeholder types on the CampaignFeed allows the same feed
  // to be used for different placeholders in different Campaigns.
  campaignFeed.setPlaceholderTypes(new int[] {PLACEHOLDER_SITELINKS});

  CampaignFeedOperation operation = new CampaignFeedOperation();
  operation.setOperand(campaignFeed);
  operation.setOperator(Operator.ADD);
  CampaignFeedReturnValue result =
      campaignFeedService.mutate(new CampaignFeedOperation[] {operation});
  for (CampaignFeed savedCampaignFeed : result.getValue()) {
    System.out.printf("Campaign with ID %d was associated with feed with ID %d.%n",
        savedCampaignFeed.getCampaignId(), savedCampaignFeed.getFeedId());
  }
}

Mit dieser Methode wird eine Kampagne einem Feed zugeordnet. Bei dieser Verknüpfung werden zwei Datenkomponenten konfiguriert: die Platzhaltertypen und die Abgleichfunktion (Filter).

Sie fragen sich vielleicht, warum der Platzhaltertyp (in diesem Beispiel Sitelinks) für den CampaignFeed noch einmal konfiguriert werden muss, obwohl er bereits in der Feedzuordnung für den Feed konfiguriert wurde. Der Grund für die erneute Konfiguration der Platzhalter ist, dass ein Feed mit mehreren Feedzuordnungen so flexibel ist, dass er nur für bestimmte Platzhaltertypen in einigen Kampagnen und andere Platzhaltertypen in anderen Kampagnen verwendet werden kann.

Durch Angabe einer Abgleichfunktion im CampaignFeed wird dem System für die Anzeigenauslieferung mitgeteilt, welche Feedelemente (Zeilen) tatsächlich als Sitelinks verwendet werden können. Weitere Informationen finden Sie im Leitfaden zu Abgleichfunktionen. In diesem Beispiel wurde FEED_ITEM_ID als RequestContextOperand in der Function für die Übereinstimmung verwendet. Es wäre aber genauso möglich gewesen, einen anderen RequestContextOperand-Typ oder sogar einen FeedAttributeOperand wie FeedAttributeId für die Übereinstimmung zu verwenden.

Das gleiche Verfahren kann bei Anzeigengruppen und Kunden angewendet werden. Sie können Feeds verknüpfen, indem Sie mit AdGroupFeedService einen AdGroupFeed bzw. mit CustomerFeedService einen CustomerFeed erstellen.

5. Feedelemente planen (optional)

Mit dem Attribut schedules eines Feedelements können Sie optional die Tage und Uhrzeiten seiner Aktivierung bestimmen. Legen Sie einfach schedules auf ein FeedItemScheduling-Element fest, das ein FeedItemSchedule für jeden Wochentag und eine Start-/Endezeit für die Aktivierung des Feedelements enthält.

Um alle Zeitpläne aus einem Feedelement zu entfernen, legen Sie die dazugehörigen schedules auf ein FeedItemScheduling-Objekt mit einer leeren feedItemSchedules-Sammlung fest.

Das Erstellen eines FeedItemSchedule-Objekts ist beispielsweise im Code-Snippet zum Aktualisieren von Anzeigenerweiterungen beschrieben.

6. Ausrichtung der Feedelemente festlegen (optional)

Ab Version 201802 können Sie FeedItemTargetService verwenden, um einzelne Feedelemente so einzuschränken, dass Anzeigen nur auf bestimmte Kampagnen, Anzeigengruppen oder Kriterien ausgerichtet werden.

Wenn Sie beispielsweise ein bestimmtes Feedelement so einschränken möchten, dass er nur für eine Anzeigengruppe in einer Kampagne gilt, erstellen Sie ein FeedItemAdGroupTarget-Objekt, das feedId, feedItemId und adGroupId enthält. Mit FeedItemAdGroupTarget wird sichergestellt, dass das Feedelement nur in dieser Anzeigengruppe ausgeliefert wird.

Diese Art von Ausrichtung ist nur einschränkend, das heißt, dass die Entität, auf die Sie eine Ausrichtung vornehmen, bereits in der zuvor eingerichteten Abgleichfunktion enthalten sein muss. Wenn Sie ein FeedItemTarget festlegen, kann dieses Feedelement nur für diese Entität ausgeliefert werden. Aber die Abgleichfunktion wird nicht erweitert, um diese Entität aufzunehmen, falls sie noch nicht eingeschlossen sein sollte.

Feedelemente entfernen

Um ein Feedelement zu entfernen, müssen Sie seinen status auf REMOVED festlegen. Entfernte Feedelemente, die keinen zugehörigen Status haben, werden nach einiger Zeit dauerhaft entfernt.

Codebeispiele

Weitere Informationen zu Feeddiensten finden Sie in den folgenden Codebeispielen in unseren Clientbibliotheken.

Bibliothek AddSitelinksUsingFeeds-Beispiel
Java AddSitelinksUsingFeeds.java
Perl add_site_links_using_feeds.pl
PHP AddSitelinksUsingFeeds.php
Python add_site_links_using_feeds.py
Ruby add_site_links_using_feeds.rb
C# AddSitelinksUsingFeeds.cs
VB.NET AddSitelinksUsingFeeds.vb

Feedback geben zu...