在展示广告网络中投放的自适应广告

在展示广告网络中投放的自适应广告可以自动调整其大小、外观和格式,以适应 Google 展示广告网络上可用的广告空间。

ResponsiveDisplayAd 包含一张营销图片、一个短标题、一个长标题、一条广告内容描述以及可选的名称和徽标字段:可在此查看所有说明

示例

制作自适应广告需要经过两个阶段:

  1. 使用 MediaService 通过 upload() 方法上传营销图片。记下返回的 ID。在稍后添加广告时,您需要此 ID。您可以选择通过相同的方法上传一个徽标图片。图片通过媒体服务上传后,可以在将来重复用于多个广告。

  2. 使用 AdGroupAdService 创建 ResponsiveDisplayAd。对于 marketingImagelogoImage,务必引用第一阶段返回的媒体 ID。

现在,让我们通过一个例子,具体了解如何将图片加入投放在展示广告网络的广告系列。下面是一张 Interplanetary Cruises 的示例图片,它满足自适应广告中图片的规格条件。

Java

public static void runExample(
    AdWordsServices adWordsServices, AdWordsSession session, long adGroupId) throws Exception {
  // Get the MediaService.
  MediaServiceInterface mediaService = adWordsServices.get(session, MediaServiceInterface.class);

  // Create image.
  Image image = new Image();
  image.setType(MediaMediaType.IMAGE);
  image.setData(
      com.google.api.ads.common.lib.utils.Media.getMediaDataFromUrl("https://goo.gl/3b9Wfh"));

  // Upload image.
  image = (Image) mediaService.upload(new Media[] {image})[0];

  // Get the AdGroupAdService.
  AdGroupAdServiceInterface adGroupAdService =
      adWordsServices.get(session, AdGroupAdServiceInterface.class);

  // Create a responsive display ad.
  ResponsiveDisplayAd responsiveDisplayAd = new ResponsiveDisplayAd();

  // This ad format does not allow the creation of an image using the
  // Image.data field. An image must first be created using the MediaService,
  // and Image.mediaId must be populated when creating the ad.
  Image marketingImage = new Image();
  marketingImage.setMediaId(image.getMediaId());
  responsiveDisplayAd.setMarketingImage(marketingImage);

  responsiveDisplayAd.setShortHeadline("Travel");
  responsiveDisplayAd.setLongHeadline("Travel the World");
  responsiveDisplayAd.setDescription("Take to the air!");
  responsiveDisplayAd.setBusinessName("Interplanetary Cruises");
  responsiveDisplayAd.setFinalUrls(new String[] {"http://www.example.com/"});

  // Create ad group ad for the responsive display ad.
  AdGroupAd expandedTextAdGroupAd = new AdGroupAd();
  expandedTextAdGroupAd.setAdGroupId(adGroupId);
  expandedTextAdGroupAd.setAd(responsiveDisplayAd);

  // Optional: set the status.
  expandedTextAdGroupAd.setStatus(AdGroupAdStatus.PAUSED);

  // Create the operation.
  AdGroupAdOperation adGroupAdOperation = new AdGroupAdOperation();
  adGroupAdOperation.setOperand(expandedTextAdGroupAd);
  adGroupAdOperation.setOperator(Operator.ADD);

  // Make the mutate request.
  AdGroupAdReturnValue result =
      adGroupAdService.mutate(new AdGroupAdOperation[] {adGroupAdOperation});

  // Display ads.
  for (AdGroupAd adGroupAdResult : result.getValue()) {
    ResponsiveDisplayAd newAd = (ResponsiveDisplayAd) adGroupAdResult.getAd();
    System.out.printf(
        "Responsive display ad with ID %d and short headline '%s' was added.%n",
        newAd.getId(), newAd.getShortHeadline());
  }
}

Visual Basic

' Get the AdGroupAdService.
Dim adGroupAdService As AdGroupAdService = CType(user.GetService( _
    AdWordsService.v201609.AdGroupAdService), AdGroupAdService)

' Get the MediaService.
Dim mediaService As MediaService = CType(user.GetService( _
    AdWordsService.v201609.MediaService), MediaService)

Try
  ' Create the image.
  Dim image As New Image()
  image.data = MediaUtilities.GetAssetDataFromUrl("https://goo.gl/3b9Wfh", user.Config)
  image.type = MediaMediaType.IMAGE

  ' Upload the image.
  Dim newImage As Image = CType(mediaService.upload(New Media() {image})(0), Image)

  ' Create a responsive display ad.
  Dim responsiveDisplayAd As New ResponsiveDisplayAd()

  ' This ad format does not allow the creation of an image using the
  ' Image.data field. An image must first be created using the MediaService,
  ' and Image.mediaId must be populated when creating the ad.
  responsiveDisplayAd.marketingImage = New Image()
  responsiveDisplayAd.marketingImage.mediaId = newImage.mediaId

  responsiveDisplayAd.shortHeadline = "Travel"
  responsiveDisplayAd.longHeadline = "Travel the World"
  responsiveDisplayAd.description = "Take to the air!"
  responsiveDisplayAd.businessName = "Google"
  responsiveDisplayAd.finalUrls = New String() {"http://www.example.com"}

  ' Create ad group ad.
  Dim adGroupAd As New AdGroupAd()
  adGroupAd.adGroupId = adGroupId
  adGroupAd.ad = responsiveDisplayAd
  adGroupAd.status = AdGroupAdStatus.PAUSED

  ' Create operation.
  Dim operation As New AdGroupAdOperation()
  operation.operand = adGroupAd
  operation.operator = [Operator].ADD

  ' Make the mutate request.
  Dim result As AdGroupAdReturnValue = adGroupAdService.mutate( _
      New AdGroupAdOperation() {operation})

  ' Display results.
  If (Not result Is Nothing) AndAlso (Not result.value Is Nothing) Then
    For Each newAdGroupAd As AdGroupAd In result.value
      Dim newAd As ResponsiveDisplayAd = CType(newAdGroupAd.ad, ResponsiveDisplayAd)
      Console.WriteLine("Responsive display ad with ID '{0}' and short headline '{1}'" & _
          " was added.", newAd.id, newAd.shortHeadline)
    Next
  Else
    Console.WriteLine("No responsive display ads were created.")
  End If
Catch e As Exception
  Throw New System.ApplicationException("Failed to create responsive display ads.", e)
End Try

Python

def main(client, ad_group_id):
  # Initialize appropriate services.
  ad_group_ad_service = client.GetService('AdGroupAdService', version='v201609')
  media_service = client.GetService('MediaService', version='v201609')

  try:
    # Create image.
    opener = urllib2.build_opener(*client.proxy_config.GetHandlers())
    image_data = base64.b64encode(opener.open('https://goo.gl/3b9Wfh').read())
    image = {
        'type': 'IMAGE',
        'data': image_data,
        'xsi_type': 'Image'
    }

    # Make the upload request
    image = media_service.upload(image)[0]

    # Create a responsive display ad.
    operations = [{
        'operator': 'ADD',
        'operand': {
            'xsi_type': 'AdGroupAd',
            'adGroupId': ad_group_id,
            'ad': {
                'xsi_type': 'ResponsiveDisplayAd',
                'marketingImage': {'mediaId': image['mediaId']},
                'shortHeadline': 'Travel',
                'longHeadline': 'Travel the World',
                'description': 'Take to the air!',
                'businessName': 'Interplanetary Cruises',
                'finalUrls': ['http://www.example.com']
            },
            # Optional fields.
            'status': 'PAUSED'
        }
    }]

    # Make the mutate request.
    ads = ad_group_ad_service.mutate(operations)

    # Display results.
    for ad in ads['value']:
      print ('ResponsiveDisplayAd with id "%d" and short headline "%s" was '
             'added.' % (ad['ad']['id'], ad['ad']['shortHeadline']))

  except:
    raise Exception('Failed to create responsive display ad.')

PHP

function AddResponsiveDisplayAd(AdWordsUser $user, $adGroupId) {
  // Get the service, which loads the required classes.
  $mediaService = $user->GetService('MediaService', ADWORDS_VERSION);

  // Creates image.
  $image = new Image();
  $image->data = MediaUtils::GetBase64Data('https://goo.gl/3b9Wfh');
  $image->type = 'IMAGE';

  // Make the upload request.
  $result = $mediaService->upload(array($image));
  $image = $result[0];

  // Get the service, which loads the required classes.
  $adGroupAdService = $user->GetService('AdGroupAdService', ADWORDS_VERSION);

  // Create a responsive display ad.
  $responsiveDisplayAd = new ResponsiveDisplayAd();

  // This ad format does not allow the creation of an image using the
  // Image.data field. An image must first be created using the MediaService,
  // and Image.mediaId must be populated when creating the ad.
  $marketingImage = new Image();
  $marketingImage->mediaId = $image->mediaId;

  $responsiveDisplayAd->marketingImage = $marketingImage;
  $responsiveDisplayAd->shortHeadline = 'Travel';
  $responsiveDisplayAd->longHeadline = 'Travel the World';
  $responsiveDisplayAd->description = 'Take to the air!';
  $responsiveDisplayAd->businessName = 'Google';
  $responsiveDisplayAd->finalUrls = array('http://www.example.com');

  // Create ad group ad.
  $adGroupAd = new AdGroupAd();
  $adGroupAd->adGroupId = $adGroupId;
  $adGroupAd->ad = $responsiveDisplayAd;

  // Set additional settings (optional).
  $adGroupAd->status = 'PAUSED';

  // Create operation.
  $operation = new AdGroupAdOperation();
  $operation->operand = $adGroupAd;
  $operation->operator = 'ADD';
  $operations[] = $operation;

  // Make the mutate request.
  $result = $adGroupAdService->mutate($operations);

  // Display results.
  foreach ($result->value as $adGroupAd) {
    printf("Responsive display ad with ID '%d' and short headline '%s'"
        . " was added.\n", $adGroupAd->ad->id, $adGroupAd->ad->shortHeadline);
  }
}

Perl

sub add_responsive_display_ad {
  my $client      = shift;
  my $ad_group_id = shift;

  # Create image.
  my $image_data = Google::Ads::Common::MediaUtils::get_base64_data_from_url(
    "https://goo.gl/3b9Wfh");
  my $image = Google::Ads::AdWords::v201609::Image->new({
      data => $image_data,
      type => "IMAGE"
  });

  # Upload image.
  $image = $client->MediaService()->upload({media => [$image]});

  # This ad format does not allow the creation of an image using the
  # Image.data field. An image must first be created using the MediaService,
  # and Image.mediaId must be populated when creating the ad.
  my $marketing_image = Google::Ads::AdWords::v201609::Image->new(
    {mediaId => $image->get_mediaId()});

  # Create the responsive display ad.
  my $responsive_display_ad =
    Google::Ads::AdWords::v201609::ResponsiveDisplayAd->new({
      marketingImage => $marketing_image,
      shortHeadline  => "Travel",
      longHeadline   => "Travel the World",
      description    => "Take to the air!",
      businessName   => "Interplanetary Cruises",
      finalUrls      => ["http://www.example.com/"],
    });

  # Create ad group ad for the responsive display ad.
  my $responsive_display_ad_group_ad =
    Google::Ads::AdWords::v201609::AdGroupAd->new({
      adGroupId => $ad_group_id,
      ad        => $responsive_display_ad,
      # Additional properties (non-required).
      status => "PAUSED"
    });

  # Create operation.
  my $responsive_display_ad_group_ad_operation =
    Google::Ads::AdWords::v201609::AdGroupAdOperation->new({
      operator => "ADD",
      operand  => $responsive_display_ad_group_ad
    });

  # Add responsive display ad.
  my $result =
    $client->AdGroupAdService()
    ->mutate({operations => [$responsive_display_ad_group_ad_operation]});

  # Display results.
  if ($result->get_value()) {
    foreach my $ad_group_ad (@{$result->get_value()}) {
      printf "New responsive display ad with id \"%d\" and " .
        "short headline \"%s\" was added.\n",
        $ad_group_ad->get_ad()->get_id(),
        $ad_group_ad->get_ad()->get_shortHeadline();
    }
  } else {
    print "No responsive display ads were added.\n";
  }

  return 1;
}

Ruby

ad_group_ad_srv = adwords.service(:AdGroupAdService, API_VERSION)
media_srv = adwords.service(:MediaService, API_VERSION)

# Create an image.
image_url = 'https://goo.gl/3b9Wfh'
raw_image_data = AdsCommon::Http.get(image_url, adwords.config)
image = {
  :xsi_type => 'Image',
  :data => Base64.encode64(raw_image_data),
  :type => 'IMAGE'
}

# Upload the image.
response = media_srv.upload([image])
if response and !response.empty?
  image = response.first
else
  raise StandardError, "Could not uplooad image. Aborting before creating ad."
end

# Create the responsive display ad.
responsive_display_ad = {
  :xsi_type => 'ResponsiveDisplayAd',
  # This ad format does not allow the creation of an image using the
  # Image.data field. An image must first be created using the MediaService,
  # and Image.mediaId must be populated when creating the ad.
  :marketing_image => {
    :media_id => image[:media_id]
  },
  :short_headline => 'Travel',
  :long_headline => 'Traver the World',
  :description => 'Take to the air!',
  :business_name => 'Interplanetary Cruises',
  :final_urls => ['http://www.example.com/']
}

# Create an ad group ad for the responsive display ad.
responsive_display_ad_group_ad = {
  :ad_group_id => ad_group_id,
  :ad => responsive_display_ad,
  # Additional propertires (non-required).
  :status => 'PAUSED'
}

# Create operation.
responsive_display_ad_group_ad_operations = {
  :operator => 'ADD',
  :operand => responsive_display_ad_group_ad
}

# Add the responsive display ad.
result = ad_group_ad_srv.mutate([responsive_display_ad_group_ad_operations])

# Display results.
if result && result[:value]
  result[:value].each do |ad_group_ad|
    puts ('New responsive display ad with id %d and short headline %s was ' +
        'added.') % [ad_group_ad[:ad][:id], ad_group_ad[:ad][:short_headline]]
  end
else
  puts "No responsive display ads were added."
end

自适应广告只能在面向 Google 展示广告网络的广告系列中投放。确保在广告系列中将 advertisingChannelType 设置为 DISPLAY。在 AdWords 界面中,将广告系列描述为仅限展示广告网络 - 所有功能

规范

营销图片和徽标图片必须满足以下尺寸和大小规格

  • 营销图片

    • 最小尺寸:600x314 像素

    • 大于最小尺寸:1.91:1 比例的 1% 范围内

    • 建议尺寸:1200x628 像素

    • 最大大小:1MB(1,048,576 字节)

  • 徽标图片(可选)

    • 最小尺寸:128x128 像素

    • 大于最小尺寸:1:1 比例的 1% 范围内

    • 建议尺寸:1200x1200 像素

    • 最大大小:1MB(1,048,576 字节)

报告

自适应广告报告中的 AdTypeRESPONSIVE_DISPLAY_AD

AD_PERFORMANCE_REPORT 包含专用于自适应广告的以下字段:

升级提示

您现在就可以在测试帐号中测试这一新广告格式。如果您要从标准文字广告升级为用于展示广告的自适应广告,请执行以下步骤:

  1. 制作处于 PAUSED 状态的新自适应广告。

  2. 等待新的自适应广告的 approvalStatus 更改为 APPROVED

  3. 通过以下两项操作发送 AdGroupAdService.mutate() 请求:

    • 将新的自适应广告的 status 设置为 ENABLED
    • 将原来的标准文字广告的 status 设置为 DISABLED

请查看根据您的文字广告生成自定义展示广告一节有关如何制作有效展示广告的提示,了解更多常规提示。

代码示例

发送以下问题的反馈:

此网页
AdWords API
AdWords API
需要帮助?请访问我们的支持页面