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, die tabellarische Daten verwenden, sind Anzeigenerweiterungen, Anzeigenanpassungen und dynamisches Remarketing. In diesem Leitfaden dienen Sitelink-Erweiterungen als Beispiel für die Verwendung von Feeddiensten. Der Vorgang ist jedoch analog für andere Arten von tabellarischen Daten, für die lediglich andere Platzhaltertypen verwendet werden (siehe unten).

In diesem Leitfaden sind die Codebeispiele in Java programmiert. Codebeispiele in anderen Programmiersprachen finden Sie in der Tabelle am Ende dieses Leitfadens.

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, sollen Sitelinks in Ihren Anzeigen erscheinen.

Hier sind einige Beispiele für 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, d. h. 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 FeedItem stellt eine Zeile in der Tabelle dar.
FeedMappingService
Mit diesem Dienst wird angegeben, wie der Feed verwendet wird, d. h. wie die Spalten der Tabelle den Feldern zugeordnet werden, die eine bestimmte AdWords-Funktion benötigt. In diesem Leitfaden wird gezeigt, 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, d. h. für alle Kampagnen und Anzeigengruppen.
CampaignFeedService
Mit diesem Dienst wird Ihr Feed für eine komplette Kampagne aktiviert, d. h. 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 in der Tabelle am Ende des Dokuments.

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)


1. Sitelinks-Feed erstellen

Mit FeedService wird eine Beschreibung des Formats der hochzuladenden Daten erstellt. Es besteht aus einem Namen oder Titel für den Feed (Tabelle) und einer Gruppe von FeedAttributes (Spalten). Jedes FeedAttribute wiederum besteht aus einem Namen (Spaltenüberschrift) und einem Typ.

Im Beispiel unten wird von createSiteLinksFeed() FeedService verwendet, um einen Feed mit FeedAttributes (Spalten) zu erstellen, der zur Aufnahme tabellarischer Daten für Sitelinks geeignet ist:

private static void createSiteLinksFeed(AdWordsServices adWordsServices, AdWordsSession session,
    SiteLinksDataHolder siteLinksData, String feedName) throws Exception {
  // 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 line1Attribute = new FeedAttribute();
  line1Attribute.setType(FeedAttributeType.STRING);
  line1Attribute.setName("Line 1 Description");
  FeedAttribute line2Attribute = new FeedAttribute();
  line2Attribute.setType(FeedAttributeType.STRING);
  line2Attribute.setName("Line 2 Description");

  // Create the feed.
  Feed siteLinksFeed = new Feed();
  siteLinksFeed.setName(feedName);
  siteLinksFeed.setAttributes(
      new FeedAttribute[] {textAttribute, finalUrlAttribute, line1Attribute, line2Attribute});
  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.line1FeedAttributeId = savedAttributes[2].getId();
  siteLinksData.line2FeedAttributeId = savedAttributes[3].getId();
  System.out.printf("Feed with name '%s' and ID %d with linkTextAttributeId %d"
      + " and linkFinalUrlAttributeId %d and line1AttributeId %d"
      + " and line2AttributeId %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 FeedAttributes (Spalten) namens Link Text, Final URLs, Line 1 und Line 2 erstellt. Der Feed erhält den Namen Feed For Sitelinks, damit er leicht wiederzuerkennen ist. Der Ursprung des Feeds wird auf FeedOrigin.USER gesetzt, um anzugeben, dass seine FeedItems (Zeilen) vom Werbetreibenden bereitgestellt werden. Daten für Feeds können auch über AdWords bereitgestellt werden.

Durch Aufrufen des Vorgangs "mutate" für FeedService wird der Feed erstellt. Nachdem der Feed hinzugefügt wurde, gibt FeedService die Feed-ID und die IDs aller FeedAttribute (Spalte) 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 davon Daten enthalten, die von der AdWords-Funktion benötigt werden. Dies wird weiter unten behandelt. Dies kann beispielsweise hilfreich sein, wenn Sie die Werte in den anderen Spalten verwenden möchten, um mithilfe einer Abgleichfunktion zu filtern, welche FeedItems (Zeilen) für welche Kampagne oder Anzeigengruppe gelten (siehe unten).

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 FeedItems (Zeilen) mit FeedItemService bereitgestellt werden.

Zunächst werden mit der Helfermethode newSiteLinkFeedItemAddOperation() FeedItems erstellt. Von dieser Helfermethode werden Informationen zu einem Sitelink (Textlabel, finale URL und Beschreibungen) sowie die IDs der FeedAttributes (Spalten) unseres Feeds verwendet, um ein neues FeedItem (Zeile) mit den bereitgestellten Informationen zu erstellen. Das neue FeedItem wird dann in eine ADD-Operation eingebunden und zurückgegeben.

Ein FeedItem 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 FeedItemAttributeValues (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 line1, String line2) {
  return newSiteLinkFeedItemAddOperation(siteLinksData, text, finalUrl, line1, line2, null);
}

private static FeedItemOperation newSiteLinkFeedItemAddOperation(
    SiteLinksDataHolder siteLinksData, String text, String finalUrl, String line1, String line2,
    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 line1TextAttributeValue = new FeedItemAttributeValue();
  line1TextAttributeValue.setFeedAttributeId(siteLinksData.line1FeedAttributeId);
  line1TextAttributeValue.setStringValue(line1);
  FeedItemAttributeValue line2TextAttributeValue = new FeedItemAttributeValue();
  line2TextAttributeValue.setFeedAttributeId(siteLinksData.line2FeedAttributeId);
  line2TextAttributeValue.setStringValue(line2);

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

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

Von der Methode createSiteLinksFeedItems() unten werden alle FeedItems und die FeedItemOperations, in denen diese enthalten sind, erstellt. Außerdem ruft sie die Helfermethode mit den verschiedenen Informationen für jeden zu erstellenden Sitelink auf.

Die vom mutate-Aufruf zurückgegebenen FeedItems 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(AdWordsServices adWordsServices,
    AdWordsSession session, SiteLinksDataHolder siteLinksData) throws Exception {
  // 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 1", "Home line 2");
  FeedItemOperation stores = newSiteLinkFeedItemAddOperation(siteLinksData, "Stores",
      "http://www.example.com/stores", "Stores line 1", "Stores line 2");
  FeedItemOperation onSale = newSiteLinkFeedItemAddOperation(siteLinksData, "On Sale",
      "http://www.example.com/sale", "On Sale line 1", "On Sale line 2");
  FeedItemOperation support = newSiteLinkFeedItemAddOperation(siteLinksData, "Support",
      "http://www.example.com/support", "Support line 1", "Support line 2");
  FeedItemOperation products = newSiteLinkFeedItemAddOperation(siteLinksData, "Products",
      "http://www.example.com/prods", "Products line 1", "Products line 2");
  // 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 1", "About Us line 2", 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. Feed den Platzhalterfeldern 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 FeedAttributes (Spalte) den Platzhalterfeldern zugeordnet, damit klar ist, wie diese FeedAttributes 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_1_TEXT = 3;
private static final int PLACEHOLDER_FIELD_LINE_2_TEXT = 4;

private static void createSiteLinksFeedMapping(AdWordsServices adWordsServices,
    AdWordsSession session, SiteLinksDataHolder siteLinksData) throws Exception {
  // 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 line1FieldMapping = new AttributeFieldMapping();
  line1FieldMapping.setFeedAttributeId(siteLinksData.line1FeedAttributeId);
  line1FieldMapping.setFieldId(PLACEHOLDER_FIELD_LINE_1_TEXT);
  AttributeFieldMapping line2FieldMapping = new AttributeFieldMapping();
  line2FieldMapping.setFeedAttributeId(siteLinksData.line2FeedAttributeId);
  line2FieldMapping.setFieldId(PLACEHOLDER_FIELD_LINE_2_TEXT);

  // Create the FeedMapping and operation.
  FeedMapping feedMapping = new FeedMapping();
  feedMapping.setPlaceholderType(PLACEHOLDER_SITELINKS);
  feedMapping.setFeedId(siteLinksData.siteLinksFeedId);
  feedMapping.setAttributeFieldMappings(new AttributeFieldMapping[] {linkTextFieldMapping,
      linkFinalUrlFieldMapping, line1FieldMapping, line2FieldMapping});
  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 das FeedMapping auf die Konstante PLACEHOLDER_SITELINKS gesetzt. Diese Konstante hat den Wert 1. Außerdem werden von dieser Methode die FeedAttributes den für Sitelinks erforderlichen Platzhalterfeldern zugeordnet: Linktext, finale URLs und Beschreibungen. Durch diese Zuordnung erkennt AdWords, welche FeedAttributes (Spalten) welchen Eigenschaften von Sitelinks entsprechen.

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 Sitelinks hingegen in jeder Kampagne verwendet werden sollen, können Sie den Feed mit dem Konto verknüpfen. Wenn andererseits 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 FeedItems (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 FeedItems (über einen Filter) für eine Kampagne und andere FeedItems (über einen weiteren Filter) für eine andere Kampagne verwendet werden. Filter werden durch die Bereitstellung einer Abgleichfunktion angewendet, die für jedes FeedItem ausgewertet wird.

private static void createSiteLinksCampaignFeed(AdWordsServices adWordsServices,
    AdWordsSession session, SiteLinksDataHolder siteLinksData, Long campaignId) throws Exception {
  // 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());
  }
}

Von dieser Methode wird eine Kampagne mit einem Feed verknüpft. 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 erneut konfiguriert werden muss, obwohl er bereits im FeedMapping für den Feed als Ganzes konfiguriert wurde. Der Grund für die erneute Konfiguration der Platzhalter ist, dass ein Feed mit mehreren FeedMappings 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 FeedItems (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 funktioniert für Anzeigengruppen und Kunden. Sie können Feeds verknüpfen, indem Sie mit AdGroupFeedService einen AdGroupFeed bzw. mit CustomerFeedService einen CustomerFeed erstellen.

5. Planen, wann Feedelemente aktiviert werden sollen (optional)

Sie können optional die Tage und Uhrzeiten der Aktivierung von Feeds festlegen, indem Sie einem FeedItem wie folgt ein FeedItemScheduling hinzufügen:

// Create and set the days and time.
FeedItemSchedule schedule = new FeedItemSchedule();
schedule.setDayOfWeek(dayOfWeek);
schedule.setStartHour(startHour);
schedule.setEndHour(endHour);
schedule.setStartMinute(startMinute);
schedule.setEndMinute(endMinute);

// Create the feed item scheduling.
FeedItemScheduling scheduling = new FeedItemScheduling();
scheduling.setFeedItemSchedules(new FeedItemSchedule[] {schedule});
item.setScheduling(scheduling);
Wenn Sie den Zeitplan zurücksetzen möchten, legen Sie ein leeres FeedItemScheduling wie im folgenden Code fest:

private static FeedItemOperation newSiteLinkFeedItemOperationResetScheduling(
    Long feedId, Long feedItemId) {
  // Create the feed item and operation.
  FeedItem feedItem = new FeedItem();
  feedItem.setFeedId(feedId);
  feedItem.setFeedItemId(feedItemId);

  FeedItemScheduling scheduling = new FeedItemScheduling();
  feedItem.setScheduling(scheduling);

  FeedItemOperation operation = new FeedItemOperation();
  operation.setOperand(feedItem);
  operation.setOperator(Operator.SET);
  return operation;
}

Vollständiger Quellcode

Sehen Sie sich die folgenden Codebeispiele in unseren Clientbibliotheken an, um mehr über Feeddienste zu erfahren.
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
.NET (C#) AddSitelinksUsingFeeds.cs
.NET (VB) AddSitelinksUsingFeeds.vb

Feedback geben zu...