Настройка текстовых объявлений

Для настройки стандартных и развернутых текстовых объявлений можно использовать модификаторы объявлений, функции обратного отсчета и функции с условным оператором. Эти способы настройки дают больше возможностей, чем параметры объявлений.

Модификаторы – решение на основе фидов, которое позволяет добавлять в объявления динамические данные. Вы можете создать фид с настройками таргетинга для определенных кампаний, групп объявлений и ключевых слов, а затем – создать объявления, в которые будут подставляться данные из этого фида.

В объявление можно добавлять текстовые строки, цены, числа и даже обратный отсчет времени до определенного дня или часа.

Модификаторы объявлений

Распространенный вариант использования модификаторов объявлений – демонстрация цены со скидкой во время акции. Для этого необходимо создать фид с названиями товаров, ценами и датами окончания распродажи, а затем добавить данные в элемент фида.

При настройке объявления в таком случае вы просто ссылаетесь на элемент фида, а также атрибуты с названием товара и ценой. Затем AdWords автоматически подставляет в объявление данные из фида.

Чтобы воспользоваться датой окончания из фида, необходимо добавить атрибут с датой в функцию, которая сообщает AdWords, что в объявлении нужно показывать отсчет до даты окончания акции. При создании объявления достаточно будет сослаться на элемент фида, а также его атрибуты с названием товара, ценой и датой окончания акции. AdWords подставит в объявление данные из фида автоматически.

В следующий сезон распродаж вы сможете повторно использовать это объявление, изменив цену и дату окончания акции в фиде.

Ниже подробно описаны все этапы:

  • как настроить фид и его атрибуты;
  • как создавать элементы фида со значениями, которые должны отображаться в объявлениях;
  • как настроить таргетинг элементов фида на определенную кампанию, группу объявлений или ключевое слово;
  • как использовать фид в объявлении;
  • как добавить обратный отсчет;
  • как добавить функцию с условным оператором.

Как настроить фид

Создайте фид со всеми атрибутами, которые вы хотите добавить в объявление.

В приведенном ниже примере фид имеет три атрибута: два относятся к типу STRING, один – к типу 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
}

Идентификаторы фида и его атрибутов понадобятся при настройке элемента фида. Получить их можно с помощью вызова mutate.

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)

Атрибуты возвращаются в том порядке, в котором они были указаны при создании фида.

Как создавать объекты FeedItem с настройками таргетинга

Создайте объект FeedItem, чтобы использовать фид только для конкретной кампании, группы объявлений, ключевого слова или местоположения. Используйте для этого атрибуты campaignTargeting, adGroupTargeting, keywordTargeting или geoTargeting объекта FeedItem.

Чтобы добавить элементы фида, используйте идентификаторы, полученные при создании фида (см. выше). В приведенном ниже коде значения каждого элемента фида передаются во вспомогательную функцию.

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

Вспомогательная функция создает элементы фида с указанными значениями:

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

Эти элементы будут применяться только для группы объявлений, указанной в идентификаторе targeting_ad_group_id. При этом динамическая замена выполняется во всех объявлениях, входящих в группу.

Если по контексту подходят несколько элементов фида, фид выбирается автоматически с помощью алгоритма, который может меняться со временем. Если вы хотите, чтобы при выборе определенных элементов фида учитывался тот или иной контекст, настройте таргетинг для этих элементов.

Как использовать фид в объявлении

После того как вы настроили фид, его можно связать с любым объявлением в системе.

При настройке объявления применяются названия атрибутов фида, а не их идентификаторы. На остальных этапах используются именно созданные системой идентификаторы.

Для подстановки пользовательского значения из фида используется синтаксис {=FeedName.AttributeName}. Значение по умолчанию указывается так: {=FeedName.AttributeName:default value}. Например, если в приведенном выше фиде нужно указать цену объекта в строке со значением по умолчанию 10 долл., используйте выражение {=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"}

Если объявление добавляется с помощью службы AdGroupAdService, в ссылки на фид AdCustomizerFeed при показе подставляются данные из элемента фида, соответствующего этой группе объявлений. Если соответствия не обнаружится, объявление не будет показано.

API проверяет объявления, в которых есть ссылки на модификаторы. Если фид с указанным названием не связан с типом тега в объявлении или же в фиде нет атрибута с указанным названием, объявление отклоняется.

Если вы измените название фида, с которым уже связаны объявления, данные в них автоматически обновятся и поддержка фида продолжится. Если вы удалите фид, с которым связаны объявления, их показ прекратится.

Объявления с модификаторами, как и обычные объявления, должны быть предварительно одобрены. Отклонены могут быть не только сами объявления, но и элементы фида, причем в обоих случаях показ будет невозможен. В редких случаях, когда элементы и объявления одобрены по отдельности, но совместное их использование нарушает правила, такое объявление отклоняется.

Как добавить обратный отсчет

Функция COUNTDOWN позволяет динамически менять значение в поле даты, чтобы показывать, сколько дней или часов осталось до окончания акции.

Например, параметр description из объявления в примере выше имеет значение 'Offer ends in {=COUNTDOWN(AdCustomizerFeed.Date)}!'. Поэтому в объявлении пользователи увидят текст "Offer ends in 5 days!" (До окончания акции осталось 5 дней!) или "Offer ends in 4 hours!" (До окончания акции осталось 4 часа!).

Когда указанный срок пройдет, показ объявления прекратится. Чтобы возобновить показ, измените дату окончания акции.

Для функции обратного отсчета используются три аргумента, однако обязателен только первый:

  • timestamp – дата, до которой ведется отсчет. Вы можете как добавить ссылку на атрибут фида, так и непосредственно указать дату.
  • language – формат даты, который зависит от страны и языка. По умолчанию – en-US.
  • days_before – количество дней до даты, указанной в аргументе timestamp, в которые будет показываться объявление. Например, если до даты осталось 6 дней, но в этом аргументе задано значение 5, объявление показываться не будет. Если значение не задано, ограничения отсутствуют.

Пример. Код {=COUNTDOWN(AdCustomizerFeed.Date, 'es', 3)} позволяет изменить язык на испанский и ограничить показ объявления в результатах поиска тремя днями до указанной даты.

Функция COUNTDOWN отсчитывает время до события в часовом поясе пользователя, выполняющего поиск. Чтобы применялся часовой пояс вашего аккаунта, замените COUNTDOWN на GLOBAL_COUNTDOWN. В функции GLOBAL_COUNTDOWN используются те же параметры, что и в COUNTDOWN.

Как добавить функцию с условным оператором

Функции с условным оператором позволяют добавлять в объявление различные фрагменты текста без использования фида, с учетом того, кто и с какого устройства отправил поисковый запрос. В настройках функции можно задать текст по умолчанию.

Параметр Критерии Синтаксис Пример
device Мобильные устройства (mobile) {=IF(device=mobile,text to insert):optional default text} {=IF(device=mobile,"Quick, Easy, Mobile Booking"):"Best price guarantee"}
audience Любой список пользователей из вашего аккаунта (если у рекламодателя несколько списков с одинаковым названием, будет выбран произвольный). {=IF(audience IN (userlist1,userlist2),text to insert):optional default text} {=IF(audience IN (returning visitors,cart abandoners),30%):25%}

Примеры кода

Ниже приведены примеры кода на каждом из поддерживаемых языков.

Параметры объявлений

C помощью параметров в объявлениях можно динамически обновлять числовые значения без необходимости прерывать показ для проверки изменений. Параметры работают по аналогии с динамической вставкой ключевых слов, когда элементы разметки заменяются нужными значениями во время показа. Для управления параметрами через API используется служба AdParamService.

Параметр объявления представлен объектом AdParam. Для корректной работы объекта AdParam необходимо соблюдение следующих условий:

  • объект нужно указать для параметров Keyword, AdGroup и paramIndex показа;
  • длина всех текстовых полей объявления после добавления параметров не должна превышать действующие ограничения;
  • объект должен использоваться в объявлении для поисковой сети Google.

Если заданное значение параметра подставить не удалось, будет использоваться его значение по умолчанию.

Примеры кода

Ниже приведены примеры кода на каждом из поддерживаемых языков.

Оставить отзыв о...

Текущей странице
Нужна помощь? Обратитесь в службу поддержки.