Textanzeigen personalisieren

Standard- und erweiterte Textanzeigen können mithilfe von Anzeigenanpassungen, Countdowns und IF-Funktionen personalisiert werden. Mit Anzeigenanpassungen sind Sie flexibler als mit Anzeigenparametern.

Eine Anzeigenanpassung ist eine feedbasierte Lösung, mit der Sie dynamische Daten in Ihre Anzeigen einbinden können. Dazu richten Sie einen Feed mit Ausrichtungsoptionen für bestimmte Kampagnen, Anzeigengruppen und/oder Keywords ein und erstellen dann Anzeigen, die auf die Daten im Feed verweisen. Die Werte im Feed werden dann zum Zeitpunkt der Auslieferung dargestellt.

Sie können Strings, Preise, Zahlen oder sogar einen Countdown bis zu einem bestimmten Datum oder einer bestimmten Uhrzeit in Ihre Anzeige einfügen.

Anzeigenanpassungen

Ein typischer Anwendungsfall für Anzeigenanpassungen ist die Werbung mit einem Sonderangebotspreis für einen Artikel in einem bestimmten Zeitraum. Dazu richten Sie einen Feed mit einem Stringattribut für den Artikelnamen, mit einem Stringattribut für den Preis und einem Datumsattribut für das Datum ein, an dem das Sonderangebot endet. Damit definieren Sie dann ein Feedelement.

Beim Einrichten der Anzeige fügen Sie einen Verweis auf die Attribute für den Artikelnamen und den Verkaufspreis aus dem Feedelement ein. Von AdWords werden dann automatisch Name und Preis aus dem Feedelement in die Anzeige aufgenommen.

Wenn Sie das Enddatum aus dem Feedelement verwenden möchten, nehmen Sie das Datumsattribut in eine Funktion auf, mit der AdWords angewiesen wird, in Ihrer Anzeige einen Countdown bis zum Enddatum darzustellen. Beim Einrichten der Anzeige fügen Sie einen Verweis auf das Feedelement mit seinen Attributen für den Artikelnamen, den Verkaufspreis und das Enddatum ein. Von AdWords werden dann automatisch Name, Preis und Enddatum aus dem Feedelement in die Anzeige übernommen.

Bei Ihrer nächsten Sonderaktion können Sie dann die Anzeige wiederverwenden, indem Sie die Werte für Preis und Enddatum des Feedelements aktualisieren. So müssen Sie nicht jedes Mal eine neue Anzeige erstellen.

In den folgenden Abschnitten werden alle Phasen dieses Anwendungsfalls erläutert:

  • Feed und Attribute einrichten
  • Feedelemente mit den Werten erstellen, die in den Anzeigen erscheinen sollen
  • Feedelemente auf bestimmte Kampagnen, Anzeigengruppen oder Keywords ausrichten
  • Feed in einer Anzeige verwenden
  • Einen Countdown hinzufügen
  • Eine IF-Funktion hinzufügen

Feed einrichten

Der erste Schritt ist das Erstellen eines Feeds mit allen Attributen, die zur Anpassung Ihrer Anzeige erforderlich sind.

Im Feed unten gibt es drei Attribute, zwei vom Typ STRING und eines vom Typ DATE_TIME:

Java

AdCustomizerFeed customizerFeed = new AdCustomizerFeed();
customizerFeed.setFeedName(feedName);

AdCustomizerFeedAttribute nameAttribute = new AdCustomizerFeedAttribute();
nameAttribute.setName("Name");
nameAttribute.setType(AdCustomizerFeedAttributeType.STRING);

AdCustomizerFeedAttribute priceAttribute = new AdCustomizerFeedAttribute();
priceAttribute.setName("Price");
priceAttribute.setType(AdCustomizerFeedAttributeType.STRING);

AdCustomizerFeedAttribute dateAttribute = new AdCustomizerFeedAttribute();
dateAttribute.setName("Date");
dateAttribute.setType(AdCustomizerFeedAttributeType.DATE_TIME);

customizerFeed.setFeedAttributes(
    new AdCustomizerFeedAttribute[] {nameAttribute, priceAttribute, dateAttribute});

C#

AdCustomizerFeed feed = new AdCustomizerFeed() {
  feedName = feedName,
  feedAttributes = new AdCustomizerFeedAttribute[] {
    new AdCustomizerFeedAttribute() {
      name = "Name",
      type = AdCustomizerFeedAttributeType.STRING
    },
    new AdCustomizerFeedAttribute() {
      name = "Price",
      type = AdCustomizerFeedAttributeType.PRICE
    },
    new AdCustomizerFeedAttribute() {
      name = "Date",
      type = AdCustomizerFeedAttributeType.DATE_TIME
    },
  }
};

Python

customizer_feed = {
    'feedName': feed_name,
    'feedAttributes': [
        {'type': 'STRING', 'name': 'Name'},
        {'type': 'STRING', 'name': 'Price'},
        {'type': 'DATE_TIME', 'name': 'Date'}
    ]
}

PHP

$nameAttribute = new AdCustomizerFeedAttribute();
$nameAttribute->setName('Name');
$nameAttribute->setType(AdCustomizerFeedAttributeType::STRING);

$priceAttribute = new AdCustomizerFeedAttribute();
$priceAttribute->setName('Price');
$priceAttribute->setType(AdCustomizerFeedAttributeType::STRING);

$dateAttribute = new AdCustomizerFeedAttribute();
$dateAttribute->setName('Date');
$dateAttribute->setType(AdCustomizerFeedAttributeType::DATE_TIME);

$customizerFeed = new AdCustomizerFeed();
$customizerFeed->setFeedName($feedName);
$customizerFeed->setFeedAttributes(
    [$nameAttribute, $priceAttribute, $dateAttribute]
);

Perl

my $name_attribute =
  Google::Ads::AdWords::v201802::AdCustomizerFeedAttribute->new({
    type => "STRING",
    name => "Name"
  });
my $price_attribute =
  Google::Ads::AdWords::v201802::AdCustomizerFeedAttribute->new({
    type => "STRING",
    name => "Price"
  });
my $date_attribute =
  Google::Ads::AdWords::v201802::AdCustomizerFeedAttribute->new({
    type => "DATE_TIME",
    name => "Date"
  });
my $ad_customizer_feed = Google::Ads::AdWords::v201802::AdCustomizerFeed->new(
  {
    feedName       => $feed_name,
    feedAttributes => [$name_attribute, $price_attribute, $date_attribute]});

Ruby

feed = {
  :feed_name => feed_name,
  :feed_attributes => [
    {:name => 'Name', :type => 'STRING'},
    {:name => 'Price', :type => 'PRICE'},
    {:name => 'Date', :type => 'DATE_TIME'}
  ]
}

VB.NET

Using adCustomizerFeedService As AdCustomizerFeedService = DirectCast(user.GetService(
    AdWordsService.v201802.AdCustomizerFeedService), AdCustomizerFeedService)

  Dim feed As New AdCustomizerFeed()
  feed.feedName = feedName

  Dim attribute1 As New AdCustomizerFeedAttribute
  attribute1.name = "Name"
  attribute1.type = AdCustomizerFeedAttributeType.STRING

  Dim attribute2 As New AdCustomizerFeedAttribute
  attribute2.name = "Price"
  attribute2.type = AdCustomizerFeedAttributeType.PRICE

  Dim attribute3 As New AdCustomizerFeedAttribute
  attribute3.name = "Date"
  attribute3.type = AdCustomizerFeedAttributeType.DATE_TIME

  feed.feedAttributes = New AdCustomizerFeedAttribute() {
  attribute1, attribute2, attribute3
}

Merken Sie sich die IDs des Feeds und der zugehörigen Attribute. Sie benötigen sie später beim Einrichten des Feedelements. Sie können diese Attribute direkt aus dem Ergebnis des mutate-Aufrufs abrufen.

Java

AdCustomizerFeedOperation feedOperation = new AdCustomizerFeedOperation();
feedOperation.setOperand(customizerFeed);
feedOperation.setOperator(Operator.ADD);

AdCustomizerFeed addedFeed = adCustomizerFeedService.mutate(
    new AdCustomizerFeedOperation[] {feedOperation}).getValue()[0];

System.out.printf(
    "Created ad customizer feed with ID %d, name '%s' and attributes:%n",
    addedFeed.getFeedId(), addedFeed.getFeedName());
for (AdCustomizerFeedAttribute feedAttribute : addedFeed.getFeedAttributes()) {
  System.out.printf(
      "  ID: %d, name: '%s', type: %s%n",
      feedAttribute.getId(), feedAttribute.getName(), feedAttribute.getType());
}

C#

AdCustomizerFeedOperation feedOperation = new AdCustomizerFeedOperation();
feedOperation.operand = feed;
feedOperation.@operator = (Operator.ADD);

AdCustomizerFeed addedFeed = adCustomizerFeedService.mutate(
    new AdCustomizerFeedOperation[] { feedOperation }).value[0];

Console.WriteLine("Created ad customizer feed with ID = {0} and name = '{1}' and " +
    "attributes: ", addedFeed.feedId, addedFeed.feedName);

foreach (AdCustomizerFeedAttribute feedAttribute in addedFeed.feedAttributes) {
  Console.WriteLine("  ID: {0}, name: '{1}', type: {2}",
      feedAttribute.id, feedAttribute.name, feedAttribute.type);
}

Python

feed_service_operation = {
    'operator': 'ADD',
    'operand': customizer_feed
}

response = ad_customizer_feed_service.mutate([feed_service_operation])

if response and 'value' in response:
  feed = response['value'][0]
  feed_data = {
      'feedId': feed['feedId'],
      'nameId': feed['feedAttributes'][0]['id'],
      'priceId': feed['feedAttributes'][1]['id'],
      'dateId': feed['feedAttributes'][2]['id']
  }
  print ('Feed with name "%s" and ID %s was added with:\n'
         '\tName attribute ID %s and price attribute ID %s and date attribute'
         'ID %s') % (feed['feedName'], feed['feedId'], feed_data['nameId'],
                     feed_data['priceId'], feed_data['dateId'])

PHP

$feedOperation = new AdCustomizerFeedOperation();
$feedOperation->setOperand($customizerFeed);
$feedOperation->setOperator(Operator::ADD);
$operations = [$feedOperation];

$result = $adCustomizerFeedService->mutate($operations);
$addedFeed = $result->getValue()[0];

printf(
    "Created ad customizer feed with ID %d, name '%s' and attributes:\n",
    $addedFeed->getFeedId(),
    $addedFeed->getFeedName()
);
if (empty($addedFeed)) {
    print "  No attributes\n";
} else {
    foreach ($addedFeed->getFeedAttributes() as $feedAttribute) {
        printf(
            "  ID: %d, name: '%s', type: %s\n",
            $feedAttribute->getId(),
            $feedAttribute->getName(),
            $feedAttribute->getType()
        );
    }
}

Perl

my $operation = Google::Ads::AdWords::v201802::AdCustomizerFeedOperation->new(
  {
    operator => "ADD",
    operand  => $ad_customizer_feed
  });

my $feed_result =
  $client->AdCustomizerFeedService()->mutate({operations => [$operation]});

my $added_feed = $feed_result->get_value(0);

printf(
  "Created ad customizer feed with ID %d, and name '%s' and attributes:\n",
  $added_feed->get_feedId(),
  $added_feed->get_feedName());
foreach my $feed_attribute ($added_feed->get_feedAttributes()) {
  printf "  ID: %d, name: '%s', type: '%s'\n",
    $feed_attribute->get_id(), $feed_attribute->get_name(),
    $feed_attribute->get_type();
}

Ruby

operation = {:operand => feed, :operator => 'ADD'}
added_feed = ad_customizer_srv.mutate([operation])[:value].first()
puts "Created ad customizer feed with ID = %d and name = '%s'." %
    [added_feed[:feed_id], added_feed[:feed_name]]
added_feed[:feed_attributes].each do |feed_attribute|
  puts "  ID: %d, name: '%s', type: %s" %
      [feed_attribute[:id], feed_attribute[:name], feed_attribute[:type]]
end

VB.NET

Dim feedOperation As New AdCustomizerFeedOperation()
feedOperation.operand = feed
feedOperation.operator = [Operator].ADD

Dim addedFeed As AdCustomizerFeed = adCustomizerFeedService.mutate(
  New AdCustomizerFeedOperation() {feedOperation}).value(0)

Console.WriteLine("Created ad customizer feed with ID = {0} and name = '{1}'.",
                addedFeed.feedId, addedFeed.feedName)

Die zurückgegebenen Attribute werden in der Reihenfolge dargestellt, die Sie beim Generieren des Feeds angegeben haben.

Feedelemente für die Ausrichtung erstellen

Erstellen Sie mithilfe der Attribute campaignTargeting, adGroupTargeting, keywordTargeting und geoTargeting des FeedItem ein FeedItem, um den Feed auf eine bestimmte Kampagne oder Anzeigengruppe, ein bestimmtes Keyword oder einen bestimmten Standort zu beschränken.

Sie können die IDs, die beim Erstellen des Feeds im obigen Schritt abgerufen wurden, zum Hinzufügen von Feedelementen verwenden. Im folgenden Codebeispiel werden die Werte jedes Feedelements an eine Hilfsfunktion übergeben.

Java

DateTime now = new DateTime();

DateTime marsDate = new DateTime(now.getYear(), now.getMonthOfYear(), 1, 0, 0);
feedItemOperations.add(createFeedItemAddOperation("Mars", "$1234.56",
    marsDate.toString("yyyyMMdd HHmmss"), adGroupIds.get(0), adCustomizerFeed));

DateTime venusDate = new DateTime(now.getYear(), now.getMonthOfYear(), 15, 0, 0);
feedItemOperations.add(createFeedItemAddOperation("Venus", "$1450.00",
    venusDate.toString("yyyyMMdd HHmmss"), adGroupIds.get(1), adCustomizerFeed));

C#

DateTime marsDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1);
feedItemOperations.Add(CreateFeedItemAddOperation(adCustomizerFeed, "Mars", "$1234.56",
    marsDate.ToString("yyyyMMdd HHmmss"), adGroupIds[0]));

DateTime venusDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 15);
feedItemOperations.Add(CreateFeedItemAddOperation(adCustomizerFeed, "Venus", "$1450.00",
    venusDate.ToString("yyyyMMdd HHmmss"), adGroupIds[1]));

Python

now = datetime.now()
mars_date = datetime(now.year, now.month, 1, 0, 0)
venus_date = datetime(now.year, now.month, 15, 0, 0)
time_format = '%Y%m%d %H%M%S'

feed_item_operations = [
    CreateFeedItemAddOperation(
        'Mars', '$1234.56', mars_date.strftime(time_format), adgroup_ids[0],
        ad_customizer_feed),
    CreateFeedItemAddOperation(
        'Venus', '$1450.00', venus_date.strftime(time_format),
        adgroup_ids[1], ad_customizer_feed)
]

PHP

$marsDate = mktime(0, 0, 0, date('m'), 1, date('Y'));
$venusDate = mktime(0, 0, 0, date('m'), 15, date('Y'));

// Create multiple feed item operations and add them to the operations list.
$operations[] = self::createFeedItemAddOperation(
    'Mars',
    '$1234.56',
    date('Ymd His', $marsDate),
    $adGroupIds[0],
    $adCustomizerFeed
);
$operations[] = self::createFeedItemAddOperation(
    'Venus',
    '$1450.00',
    date('Ymd His', $venusDate),
    $adGroupIds[1],
    $adCustomizerFeed
);

Perl

push @operations,
  create_feed_item_add_operation($ad_customizer_feed,
  "Mars", "\$1234.56", "20140601 000000",
  $ad_group_ids->[0]);
push @operations,
  create_feed_item_add_operation($ad_customizer_feed,
  "Venus", "\$1450.00", "20140615 120000",
  $ad_group_ids->[1]);

Ruby

# Now adding feed items -- the values we'd like to place.
now_date = Date.today()

items_data = [
  {
    :name => 'Mars',
    :price => '$1234.56',
    :date => now_date.strftime('%Y%m01 000000'),
    :ad_group_id => ad_group_ids[0]
  },
  {
    :name => 'Venus',
    :price => '$1450.00',
    :date => now_date.strftime('%Y%m15 000000'),
    :ad_group_id => ad_group_ids[1]
   }
]

VB.NET

Dim marsDate As New DateTime(DateTime.Now.Year, DateTime.Now.Month, 1)
feedItemOperations.Add(CreateFeedItemAddOperation(adCustomizerFeed, "Mars", "$1234.56",
  marsDate.ToString("yyyyMMdd HHmmss"), adGroupIds(0)))

Dim venusDate As New DateTime(DateTime.Now.Year, DateTime.Now.Month, 15)
feedItemOperations.Add(CreateFeedItemAddOperation(adCustomizerFeed, "Venus", "$1450.00",
  venusDate.ToString("yyyyMMdd HHmmss"), adGroupIds(1)))

Durch die Hilfsfunktion wird das Feedelement mit den bereitgestellten Werten eingerichtet:

Java

FeedItem feedItem = new FeedItem();
feedItem.setFeedId(adCustomizerFeed.getFeedId());

List<FeedItemAttributeValue> attributeValues = new ArrayList<>();

// FeedAttributes appear in the same order as they were created - Name, Price, Date.
// See the createCustomizerFeed method for details.
FeedItemAttributeValue nameAttributeValue = new FeedItemAttributeValue();
nameAttributeValue.setFeedAttributeId(adCustomizerFeed.getFeedAttributes(0).getId());
nameAttributeValue.setStringValue(name);
attributeValues.add(nameAttributeValue);

FeedItemAttributeValue priceAttributeValue = new FeedItemAttributeValue();
priceAttributeValue.setFeedAttributeId(adCustomizerFeed.getFeedAttributes(1).getId());
priceAttributeValue.setStringValue(price);
attributeValues.add(priceAttributeValue);

FeedItemAttributeValue dateAttributeValue = new FeedItemAttributeValue();
dateAttributeValue.setFeedAttributeId(adCustomizerFeed.getFeedAttributes(2).getId());
dateAttributeValue.setStringValue(date);
attributeValues.add(dateAttributeValue);

feedItem.setAttributeValues(
    attributeValues.toArray(new FeedItemAttributeValue[attributeValues.size()]));

feedItem.setAdGroupTargeting(new FeedItemAdGroupTargeting(adGroupId));

C#

FeedItem feedItem = new FeedItem() {
  feedId = adCustomizerFeed.feedId,

  // FeedAttributes appear in the same order as they were created
  // - Name, Price, Date. See CreateCustomizerFeed method for details.
  attributeValues = new FeedItemAttributeValue[] {
    new FeedItemAttributeValue() {
      feedAttributeId = adCustomizerFeed.feedAttributes[0].id,
      stringValue = name
    },

    new FeedItemAttributeValue() {
      feedAttributeId = adCustomizerFeed.feedAttributes[1].id,
      stringValue = price
    },

    new FeedItemAttributeValue() {
      feedAttributeId = adCustomizerFeed.feedAttributes[2].id,
      stringValue = date
    }
  },

  adGroupTargeting = new FeedItemAdGroupTargeting() {
    TargetingAdGroupId = adGroupId
  }
};

Python

feed_item = {
    'feedId': ad_customizer_feed['feedId'],
    'adGroupTargeting': {
        'TargetingAdGroupId': adgroup_id
    },
    'attributeValues': [
        {
            'feedAttributeId': ad_customizer_feed['feedAttributes'][0]['id'],
            'stringValue': name
        },
        {
            'feedAttributeId': ad_customizer_feed['feedAttributes'][1]['id'],
            'stringValue': price
        },
        {
            'feedAttributeId': ad_customizer_feed['feedAttributes'][2]['id'],
            'stringValue': date
        }
    ]
}

operation = {
    'operator': 'ADD',
    'operand': feed_item
}

PHP

$nameAttributeValue = new FeedItemAttributeValue();
$nameAttributeValue->setFeedAttributeId(
    $adCustomizerFeed->getFeedAttributes()[0]->getId()
);
$nameAttributeValue->setStringValue($name);

$priceAttributeValue = new FeedItemAttributeValue();
$priceAttributeValue->setFeedAttributeId(
    $adCustomizerFeed->getFeedAttributes()[1]->getId()
);
$priceAttributeValue->setStringValue($price);

$dateAttributeValue = new FeedItemAttributeValue();
$dateAttributeValue->setFeedAttributeId(
    $adCustomizerFeed->getFeedAttributes()[2]->getId()
);
$dateAttributeValue->setStringValue($date);

$item = new FeedItem();
$item->setFeedId($adCustomizerFeed->getFeedId());
$item->setAttributeValues(
    [$nameAttributeValue, $priceAttributeValue, $dateAttributeValue]
);

$adGroupTargeting = new FeedItemAdGroupTargeting();
$adGroupTargeting->setTargetingAdGroupId($adGroupId);
$item->setAdGroupTargeting($adGroupTargeting);

Perl

my ($ad_customizer_feed, $name, $price, $date, $ad_group_id) = @_;

my $name_attribute_value =
  Google::Ads::AdWords::v201802::FeedItemAttributeValue->new({
    feedAttributeId =>
      $ad_customizer_feed->get_feedAttributes()->[0]->get_id(),
    stringValue => $name
  });
my $price_attribute_value =
  Google::Ads::AdWords::v201802::FeedItemAttributeValue->new({
    feedAttributeId =>
      $ad_customizer_feed->get_feedAttributes()->[1]->get_id(),
    stringValue => $price
  });
my $date_attribute_value =
  Google::Ads::AdWords::v201802::FeedItemAttributeValue->new({
    feedAttributeId =>
      $ad_customizer_feed->get_feedAttributes()->[2]->get_id(),
    stringValue => $date
  });

my $feed_item = Google::Ads::AdWords::v201802::FeedItem->new({
    feedId => $ad_customizer_feed->get_feedId(),
    attributeValues =>
      [$name_attribute_value, $price_attribute_value, $date_attribute_value],
    adGroupTargeting =>
      Google::Ads::AdWords::v201802::FeedItemAdGroupTargeting->new(
      {TargetingAdGroupId => $ad_group_id})});

Ruby

feed_items = items_data.map do |item|
  {
    :feed_id => feed_data[:feed_id],
    :attribute_values => [
      {
        :feed_attribute_id => feed_data[:name_id],
        :string_value => item[:name]
      },
      {
        :feed_attribute_id => feed_data[:price_id],
        :string_value => item[:price]
      },
      {
        :feed_attribute_id => feed_data[:date_id],
        :string_value => item[:date]
      }
    ],
    :ad_group_targeting => {
      :targeting_ad_group_id => item[:ad_group_id]
    }
  }
end

VB.NET

Dim feedItem As New FeedItem
feedItem.feedId = adCustomizerFeed.feedId
Dim attributeValues As New List(Of FeedItemAttributeValue)

' FeedAttributes appear in the same order as they were created
' - Name, Price, Date. See CreateCustomizerFeed method for details.
Dim nameAttributeValue As New FeedItemAttributeValue
nameAttributeValue.feedAttributeId = adCustomizerFeed.feedAttributes(0).id
nameAttributeValue.stringValue = nameValue
attributeValues.Add(nameAttributeValue)

Dim priceAttributeValue As New FeedItemAttributeValue
priceAttributeValue.feedAttributeId = adCustomizerFeed.feedAttributes(1).id
priceAttributeValue.stringValue = priceValue
attributeValues.Add(priceAttributeValue)

Dim dateAttributeValue As New FeedItemAttributeValue
dateAttributeValue.feedAttributeId = adCustomizerFeed.feedAttributes(2).id
dateAttributeValue.stringValue = dateValue
attributeValues.Add(dateAttributeValue)

feedItem.attributeValues = attributeValues.ToArray

feedItem.adGroupTargeting = New FeedItemAdGroupTargeting
feedItem.adGroupTargeting.TargetingAdGroupId = adGroupId

Die Elemente werden nur für die Anzeigengruppe abgerufen, die für die targeting_ad_group_id angegeben ist. Diese Feedelemente werden von jeder Anzeige in dieser Anzeigengruppe für die dynamischen Ersetzungen verwendet.

Wenn es in einem bestimmten Kontext Übereinstimmungen mit mehreren Feedelementen gibt, wird vom AdWords-System mithilfe eines Algorithmus automatisch ein Element ausgewählt. Dieser Algorithmus kann jedoch im Laufe der Zeit variieren. Wenn Sie mehr Kontrolle darüber haben möchten, welche Feedelemente in einem bestimmten Kontext verwendet werden, müssen Sie innerhalb der Feedelemente eine bestimmte Ausrichtung angeben.

Feed in einer Anzeige verwenden

Sobald der Feed eingerichtet wurde, können Sie in jeder Anzeige im System darauf verweisen.

Beim Einrichten der Anzeige verweisen Sie auf einen Feed und seine Attribute mit dem Namen, nicht mit der ID. Dies ist ein Unterschied zu den anderen Schritten, in denen Sie die vom System generierten IDs verwenden.

Die Syntax zum Einfügen eines benutzerdefinierten Werts aus einem Feed ist {=FeedName.AttributeName}. Falls Sie einen Standardwert festlegen möchten, lautet die Syntax {=FeedName.AttributeName:default value}. Wenn Sie beispielsweise beim Feed oben den Preis eines Artikels mit einem Standardwert von 10 $ in den String einfügen möchten, verwenden Sie {=AdCustomizerFeed.Price:$10}:

Java

ExpandedTextAd textAd = new ExpandedTextAd();
textAd.setHeadlinePart1(String.format("Luxury Cruise to {=%s.Name}", feedName));
textAd.setHeadlinePart2(String.format("Only {=%s.Price}", feedName));
textAd.setDescription(String.format("Offer ends in {=countdown(%s.Date)}!", feedName));
textAd.setFinalUrls(new String[] {"http://www.example.com"});

C#

ExpandedTextAd expandedTextAd = new ExpandedTextAd() {
  headlinePart1 = string.Format("Luxury Cruise to {{={0}.Name}}", feedName),
  headlinePart2 = string.Format("Only {{={0}.Price}}", feedName),
  description = string.Format("Offer ends in {{=countdown({0}.Date)}}!", feedName),
  finalUrls = new string[] { "http://www.example.com" }
};

Python

expanded_text_ad = {
    'xsi_type': 'ExpandedTextAd',
    'headlinePart1': 'Luxury Cruise to {=%s.Name}' % feed_name,
    'headlinePart2': 'Only {=%s.Price}' % feed_name,
    'description': 'Offer ends in {=countdown(%s.Date)}!' % feed_name,
    'finalUrls': ['http://www.example.com'],
}

PHP

// Create an expanded text ad that uses ad customization.
$expandedTextAd = new ExpandedTextAd();
$expandedTextAd->setHeadlinePart1(
    sprintf('Luxury Cruise to {=%s.Name}', $feedName)
);
$expandedTextAd->setHeadlinePart2(
    sprintf('Only {=%s.Price}', $feedName)
);
$expandedTextAd->setDescription(
    sprintf('Offer ends in {=countdown(%s.Date)}!', $feedName)
);
$expandedTextAd->setFinalUrls(['http://www.example.com']);

Perl

my $text_ad = Google::Ads::AdWords::v201802::ExpandedTextAd->new({
    headlinePart1 => sprintf("Luxury Cruise to {=%s.Name}", $feed_name),
    headlinePart2 => sprintf("Only {=%s.Price}",            $feed_name),
    description =>
      sprintf("Offer ends in {=countdown(%s.Date)}!", $feed_name),
    finalUrls => ['http://www.example.com']});

Ruby

# All set! We can now create ads with customizations.
expanded_text_ad = {
  :xsi_type => 'ExpandedTextAd',
  :headline_part1 => 'Luxury Cruise to {=%s.Name}' % feed_name,
  :headline_part2 => 'Only {=%s.Price}' % feed_name,
  :description => 'Offer ends in {=countdown(%s.Date)}!' % feed_name,
  :final_urls => ['http://www.example.com']
}

VB.NET

Dim expandedTextAd As New ExpandedTextAd
expandedTextAd.headlinePart1 = String.Format("Luxury Cruise to {{={0}.Name}}", feedName)
expandedTextAd.headlinePart2 = String.Format("Only {{={0}.Price}}", feedName)
expandedTextAd.description = String.Format("Offer ends in {{=countdown({0}.Date)}}!",
                                         feedName)
expandedTextAd.finalUrls = New String() {"http://www.example.com"}

Wenn diese Anzeige über AdGroupAdService hinzugefügt wird, werden die Verweise auf AdCustomizerFeed bei der Auslieferung mit übereinstimmenden Daten ausgefüllt. Die Daten stammen dabei aus einem Feedelement innerhalb dieses Feeds, das mit der aktuellen Anzeigengruppe übereinstimmt. Die Anzeige wird nicht ausgeliefert, wenn keine Übereinstimmung gefunden wird.

Von der API werden Anzeigen überprüft, die Verweise auf Anzeigenanpassungen enthalten: Wenn dem Anzeigenplatzhaltertyp kein Feed mit dem angegebenen Namen zugeordnet oder im Feed kein Attribut mit dem angegebenen Namen vorhanden ist, wird die Anzeige abgelehnt.

Wenn Sie den Namen eines Feeds ändern, auf den Anzeigen verweisen, werden die Anzeigen automatisch so aktualisiert, dass sie auf den neuen Feednamen verweisen. Falls Sie einen Feed löschen, auf den Anzeigen verweisen, werden diese Anzeigen nicht mehr ausgeliefert.

Anzeigen mit Anpassungen müssen genau wie alle anderen Anzeigen freigegeben werden. Feedelemente und Anzeigen können separat abgelehnt werden. Wenn nur die Feedelemente oder nur die Anzeigen abgelehnt werden, können die Anzeigen jedoch nicht ausgeliefert werden. Falls die einzelnen Teile in Ordnung sind, jedoch durch die Kombination der beiden Teile ein Verstoß auftritt, wird die Anzeige abgelehnt und nicht ausgeliefert.

Einen Countdown hinzufügen

Mit der Funktion COUNTDOWN kann ein Datumsfeld dynamisch geändert werden, sodass es anzeigt, wie viel Zeit (Tage, Stunden) noch übrig ist.

Beispielsweise ist die description der obigen Beispielanzeige auf 'Offer ends in {=COUNTDOWN(AdCustomizerFeed.Date)}!' festgelegt. Zum Zeitpunkt der Auslieferung ist dann in der Anzeige der Text "Offer ends in 5 days!" oder "Offer ends in 4 hours!" zu sehen – je nach der verbleibenden Zeit.

Nachdem das im Countdown angegebene Datum verstrichen ist, wird die Anzeige erst wieder ausgeliefert, wenn das Datum aktualisiert wird.

Die Countdown-Funktion hat drei Argumente, aber nur das erste ist erforderlich:

  • timestamp: Das Datum, zu dem Sie herunterzählen. Dieser Wert kann ein Verweis auf ein Feedattribut oder ein Datumsliteralwert sein.
  • language: Die Sprache, in der Countdown angezeigt werden soll. Ohne Angabe ist die Standardeinstellung en-US.
  • days_before: Die Anzahl der Tage vor timestamp, an denen mit der Auslieferung begonnen werden kann. Wenn der heutige Tag beispielsweise sechs Tage vor dem in timestamp angegebenen Termin liegt und dieses Feld auf "5" festgelegt ist, wird die Anzeige nicht ausgeliefert. Ohne Angabe gelten keine Einschränkungen.

Ein Beispiel: Verwenden Sie {=COUNTDOWN(AdCustomizerFeed.Date, 'es', 3)}, um die Sprache in Spanisch zu ändern und die Anzeige so zu beschränken, dass sie erst drei Tage vor dem angegebenen Datum in Suchergebnissen erscheint.

Mit der Funktion COUNTDOWN wird ein Countdown bis zu einem Ereignis in der Zeitzone des Nutzers gestartet, von dem die Suchanfrage stammt. Eine Variante von COUNTDOWN, die Funktion GLOBAL_COUNTDOWN, zählt bis zu einem bestimmten Zeitpunkt in der Zeitzone Ihres Kontos herunter. Für GLOBAL_COUNTDOWN können Sie dieselben Parameter verwenden wie für COUNTDOWN.

Eine IF-Funktion hinzufügen

Mit IF-Funktionen können Sie personalisierte Nachrichten in Ihre Anzeigen einfügen lassen – je nachdem, welcher Nutzer etwas sucht und welches Gerät er dafür verwendet. Das alles funktioniert ohne einen Feed. Der Standardtext ist optional.

Größe Kriterien Syntax Beispiel
Gerät Mobilgeräte {=IF(device=mobile,text to insert):optional default text} {=IF(device=mobile,"Quick, Easy, Mobile Booking"):"Best price guarantee"}
Zielgruppe Jeder gültige Nutzerlistenname in Ihrem Konto. Sollte der Listenname mit mehreren Listen im Werbetreibendenkonto übereinstimmen, wird einer auf Zufallsbasis ausgewählt. {=IF(audience IN (userlist1,userlist2),text to insert):optional default text} {=IF(audience IN (returning visitors,cart abandoners),30%):25%}

Codebeispiele

Codebeispiele in allen unterstützten Programmiersprachen erleichtern den Einstieg in die Nutzung von Anzeigenanpassungen:

Anzeigenparameter

Wenn Sie Anzeigenparameter verwenden, können die Zahlenangaben in einer Anzeige aktualisiert werden, ohne dass die Anzeige erneut zur Überprüfung und Freigabe eingereicht werden muss. Dies funktioniert in etwa wie Keyword-Platzhalter, bei denen Markups in der Anzeige aktualisiert werden, wenn sie ausgeliefert wird. Anzeigenparameter werden durch den AdParamService über die API verwaltet.

Anzeigenparameter werden durch AdParam-Objekte dargestellt. Damit ein AdParam korrekt funktioniert, müssen folgende Anforderungen erfüllt sein:

  • Der Parameter muss für das Keyword, die AdGroup und den paramIndex dieser Impression angegeben sein.
  • Der Parameter darf nicht dazu führen, dass ein Textfeld der Anzeige die maximale Zeilenlänge überschreitet, wenn alle Anzeigenparameter angewendet sind.
  • Der Parameter darf nicht Teil einer Anzeige sein, die im Google Suchnetzwerk ausgeliefert wird.

Falls beim Einfügen ein Problem auftritt, werden für den Anzeigenparameter die Standardwerte angezeigt.

Codebeispiele

Codebeispiele in allen unterstützten Programmiersprachen erleichtern den Einstieg in die Verwaltung von Anzeigenparametern:

Feedback geben zu...