テキスト広告のカスタマイズ

標準テキスト広告や拡張テキスト広告は、広告カスタマイザ、カウントダウンIF 関数を使ってカスタマイズできます。 広告カスタマイザの方が広告パラメータよりも柔軟に使用できます。

広告カスタマイザは、広告に動的情報を挿入するフィードベースのソリューションです。特定のキャンペーン、広告グループ、キーワードのターゲット設定を指定したフィードを設定して、フィードに含まれる情報を参照する広告を作成し、フィードの値が配信時に表示されるようにすることができます。

広告には、文字列、価格、数字のほか、特定の日付や時刻までのカウントダウンを挿入できます。

広告カスタマイザ

広告カスタマイザの一般的な使用例は、特定の期間に商品アイテムのセール価格を宣伝することです。これを実現するには、商品アイテム名の文字列属性、価格の文字列属性、セール終了日の日付属性を指定してフィードを設定し、フィード アイテムにそれぞれの情報を入力します。

広告を設定する際に、フィード アイテム、名前属性、セール価格属性を指定することで、フィード アイテムに含まれる名前と価格が自動的に広告に挿入されます。

フィード アイテムの終了日を使うには、終了日までのカウントダウンを広告に表示するよう指定する関数に日付属性を含めます。広告を作成する際に、フィード アイテム、名前属性、セール価格属性、終了日属性を指定することで、フィード アイテムに含まれる名前、価格、終了日が自動的に広告に挿入されます。

次回のセールの際は、新しい広告を作成するのではなく、フィード アイテムの価格と終了日の値を更新して、広告を再利用できます。

以下では、この使用例の手順全体を説明します。これには、次の手順が含まれます。

  • フィードと属性を設定する
  • 広告に表示する値を指定したフィード アイテムを作成する
  • フィード アイテムを特定のキャンペーン、広告グループ、キーワードのターゲットに設定する
  • 広告でフィードを使用する
  • カウントダウンを追加する
  • IF 関数を追加する

フィードを設定する

まず、広告のカスタマイズに必要なすべての属性を指定したフィードを作成します。

以下のフィードには 3 つの属性があり、2 つは STRING、1 つは 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
}

フィードと属性の ID は、フィード アイテムの設定時に必要となるため、記録しておいてください。この属性は、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 を作成すると、FeedItemcampaignTargetingadGroupTargetingkeywordTargetinggeoTargeting 属性を使って、特定のキャンペーン、広告グループ、キーワード、場所のみにフィードを制限できます。

上の手順でフィードを作成する際に取得した ID を使用して、フィード アイテムを追加できます。次のコードサンプルは、各フィード アイテムの値をヘルパー関数に渡します。

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 で指定された広告グループのみです。このフィード アイテムは、指定された広告グループ内のすべての広告で動的な書き換えに使用されます。

複数のフィード アイテムが合致する状況では、自動的に 1 つを選択するアルゴリズムが使用されます。このアルゴリズムは今後変更される場合があります。選択されるフィード アイテムとその状況を意図どおりに対応させるには、フィード アイテム内で一貫したターゲット設定を使ってください。

広告でフィードを使用する

フィードを設定したら、AdWords のすべての広告からそのフィードを参照できます。

広告を設定する際は、ID ではなく名前でフィードと属性を参照します。 これは、システムが生成した 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 によって検証されます。指定された名前のフィードが、広告プレースホルダ タイプにマッピングされていない場合や、指定された名前の属性がフィードにない場合、広告は承認されません。

広告から参照されているフィードの名前を変更すると、新しいフィードの名前を参照するよう、自動的に広告が更新されます。広告から参照されているフィードを削除すると、該当する広告は配信されなくなります。

広告カスタマイザを使う広告も、他の広告と同じように承認が必要です。 フィード アイテムと広告は個別に不承認になる場合がありますが、いずれか一方が不承認になると広告は配信されません。まれなケースとして、個別には承認されていても、2 つの組み合わせがポリシー違反となり、広告の配信が不承認になる場合もあります。

カウントダウンを追加する

COUNTDOWN 関数を使うと、日付フィールドの表示方法を動的に変更して、残り時間(日数、時間数)を表示できます。

たとえば、上の広告例の description'Offer ends in {=COUNTDOWN(AdCustomizerFeed.Date)}!' に設定すると、配信時に、残り時間に応じて広告に "Offer ends in 5 days!" や "Offer ends in 4 hours!" と表示されます。

カウントダウンで指定された日付を過ぎると、日付を更新するまで広告は配信されなくなります。

カウントダウン関数には 3 つの引数がありますが、1 つ目のみが必須です。

  • timestamp: カウントダウンの終了日となる日付。この値には、フィード属性への 参照か、特定の日付リテラルを指定できます。
  • language: 表示されるカウントダウンのロケール。未指定の場合、 デフォルトで en-US が使用されます。
  • days_before: timestamp の何日前からこの広告の配信を 開始するか。たとえば、このフィールドに 5 を設定すると、 指定の日時の 6 日前に広告は配信されません。未指定の場合、制限は 設定されません。

たとえば、{=COUNTDOWN(AdCustomizerFeed.Date, 'es', 3)} と指定した場合、言語はスペイン語に変更され、指定された日付の 3 日前までこの広告は検索結果に表示されなくなります。

COUNTDOWN 関数は、ユーザーが検索を行ったタイムゾーンを基準にイベントまで時間をカウントダウンします。COUNTDOWN の別バージョンに GLOBAL_COUNTDOWN という関数があり、アカウントのタイムゾーンを基準に時間をカウントダウンします。GLOBAL_COUNTDOWN は、COUNTDOWN とまったく同じパラメータを受け取ります。

IF 関数を追加する

IF 関数を使うと、検索したユーザーと検索に利用している端末に基づいて、フィードをまったく使わずに、カスタマイズされたメッセージを広告に挿入できます。デフォルトのテキストは省略可です。

項目 条件 構文
端末 モバイル {=IF(device=mobile,text to insert):optional default text} {=IF(device=mobile,"Quick, Easy, Mobile Booking"):"Best price guarantee"}
ユーザー層 アカウント内の有効なユーザーリスト名(リスト名が広告主様のアカウントの複数のリストと一致する場合、任意のリストがランダムに選択されます) {=IF(audience IN (userlist1,userlist2),text to insert):optional default text} {=IF(audience IN (returning visitors,cart abandoners),30%):25%}

コードサンプル

サポートされている各言語のコードサンプルを使って、広告カスタマイザの追加を始めることができます。

広告パラメータ

広告パラメータを使うと、広告の数値情報を動的に更新できるため、審査や承認のために広告を再送信する必要がなくなります。これは、広告が表示される際にその中のマークアップが更新されるキーワードの挿入に似ています。広告パラメータは、API 経由で AdParamService を通じて管理します。

広告パラメータは、AdParam オブジェクトで表されます。 AdParam を正しく機能させるには、次の条件を満たす必要があります。

  • 該当するインプレッションの KeywordAdGroupparamIndex に対して指定します。
  • すべての広告パラメータを適用した後に、広告のテキスト フィールドの長さが 1 行あたりの上限を超えないようにします。
  • Google 検索ネットワークに表示される広告の一部に含めます。

挿入時に問題が発生した場合、広告パラメータのデフォルト値が表示されます。

コードサンプル

サポートされている各言語のコードサンプルを使って、広告パラメータの管理を始めることができます。

フィードバックを送信...

ご不明な点がありましたら、Google のサポートページをご覧ください。