A maioria dos tipos de recurso precisa ser criada usando o
AssetService antes de ser usada em um anúncio.
O tipo TextAsset é a exceção, já que é
criado inline durante a criação do anúncio. Todos os outros tipos precisam ser enviados para uma conta do Google Ads antes de serem usados.
Níveis de associação de recursos
Os recursos são disponibilizados para veiculação quando são vinculados a diferentes entidades na hierarquia da sua conta do Google Ads. O nível de associação depende do tipo de recurso e de campanha. Os recursos comuns para gerenciar esses links incluem:
CustomerAsset: para recursos vinculados no nível da conta.CampaignAsset: para recursos vinculados a uma campanha específica.AdGroupAsset: para recursos vinculados a um grupo de anúncios específico.AssetGroupAsset: para recursos vinculados a um grupo de recursos em campanhas Performance Max.
O serviço e o recurso específicos a serem usados dependem do que você está tentando alcançar.
Propriedades da marca das campanhas Performance Max
Embora muitos recursos nas campanhas Performance Max estejam vinculados a grupos de recursos usando AssetGroupAsset, os recursos Nome da empresa e Logo da empresa são uma exceção se as diretrizes da marca estiverem ativadas para a campanha. Nesse caso,
eles são vinculados diretamente no nível da campanha usando
CampaignAsset com os tipos de campo
BUSINESS_NAME e LOGO, respectivamente. Se as diretrizes de marca estiverem
desativadas para a campanha, esses recursos precisarão ser anexados usando
AssetGroupAsset. Consulte
Recursos nas campanhas Performance Max para mais detalhes.
Criar um recurso
Nomes exclusivos são obrigatórios ao criar recursos de imagem e de conjunto de mídia. Se você fornecer um nome que já existe, um novo nome será criado anexando uma string exclusiva ao nome atual. Recomendamos que você use nomes exclusivos e descritivos para facilitar o gerenciamento e a identificação de recursos individuais à medida que sua coleção cresce.
Importante: o AssetService é compatível com as operações create e update para muitos tipos de recursos (como sitelinks, frases de destaque ou promoções), enquanto os recursos imutáveis, como TextAsset e ImageAsset, não podem ser modificados depois de serem enviados para uma conta do Google Ads. É preciso usar operações no nível do anúncio ou da entidade para gerenciar associações entre recursos individuais e anúncios ou campanhas.
O exemplo a seguir mostra como criar um recurso de imagem com base em um URL de dados de imagem brutos.
Java
private void runExample(GoogleAdsClient googleAdsClient, long customerId) throws IOException { byte[] imageData = ByteStreams.toByteArray(new URL(IMAGE_URL).openStream()); // Create the image asset. ImageAsset imageAsset = ImageAsset.newBuilder().setData(ByteString.copyFrom(imageData)).build(); // Creates an asset. Asset asset = Asset.newBuilder() // Provide a unique friendly name to identify your asset. // When there is an existing image asset with the same content but a different name, the // new name will be dropped silently. .setName("Marketing Image") .setType(AssetType.IMAGE) .setImageAsset(imageAsset) .build(); // Creates the operation. AssetOperation operation = AssetOperation.newBuilder().setCreate(asset).build(); // Creates the service client. try (AssetServiceClient assetServiceClient = googleAdsClient.getLatestVersion().createAssetServiceClient()) { // Issues a mutate request to add the asset. MutateAssetsResponse response = assetServiceClient.mutateAssets(Long.toString(customerId), ImmutableList.of(operation)); // Prints the result. System.out.printf( "The image asset with resource name '%s' was created.%n", response.getResults(0).getResourceName()); } }
C#
public void Run(GoogleAdsClient client, long customerId) { // Get the AssetServiceClient. AssetServiceClient assetService = client.GetService(Services.V26.AssetService); // Creates an image content. byte[] imageContent = MediaUtilities.GetAssetDataFromUrl(IMAGE_URL, client.Config); // Creates an image asset. ImageAsset imageAsset = new ImageAsset() { Data = ByteString.CopyFrom(imageContent), FileSize = imageContent.Length, MimeType = MimeType.ImageJpeg, FullSize = new ImageDimension() { HeightPixels = 315, WidthPixels = 600, Url = IMAGE_URL } }; // Creates an asset. Asset asset = new Asset() { // Optional: Provide a unique friendly name to identify your asset. // If you specify the name field, then both the asset name and the image being // uploaded should be unique, and should not match another ACTIVE asset in this // customer account. // Name = 'Jupiter Trip #' + ExampleUtilities.GetRandomString(), Type = AssetType.Image, ImageAsset = imageAsset, // Provide a unique friendly name to identify your asset. // When there is an existing image asset with the same content but a different // name, the new name will be dropped silently. Name = "Marketing Image" }; // Creates an asset operation. AssetOperation operation = new AssetOperation() { Create = asset }; try { // Issues a mutate request to add the asset. MutateAssetsResponse response = assetService.MutateAssets(customerId.ToString(), new[] { operation }); // Displays the result. Console.WriteLine($"Image asset with resource name: " + $"'{response.Results.First().ResourceName}' is created."); } catch (GoogleAdsException e) { Console.WriteLine("Failure:"); Console.WriteLine($"Message: {e.Message}"); Console.WriteLine($"Failure: {e.Failure}"); Console.WriteLine($"Request ID: {e.RequestId}"); throw; } }
PHP
public static function runExample(GoogleAdsClient $googleAdsClient, int $customerId) { // Creates an image content. $imageContent = file_get_contents(self::IMAGE_URL); // Creates an asset. $asset = new Asset( [ // Provide a unique friendly name to identify your asset. // When there is an existing image asset with the same content but a different // name, the new name will be dropped silently. 'name' => 'Marketing Image', 'type' => AssetType::IMAGE, 'image_asset' => new ImageAsset(['data' => $imageContent]) ] ); // Creates an asset operation. $assetOperation = new AssetOperation(); $assetOperation->setCreate($asset); // Issues a mutate request to add the asset. $assetServiceClient = $googleAdsClient->getAssetServiceClient(); $response = $assetServiceClient->mutateAssets( MutateAssetsRequest::build( $customerId, [$assetOperation] ) ); if (!empty($response->getResults())) { // Prints the resource name of the added image asset. /** * @var MutateAssetResult $addedImageAsset */ $addedImageAsset = $response->getResults()[0]; printf( "The image asset with resource name '%s' was created.%s", $addedImageAsset->getResourceName(), PHP_EOL ); } else { print 'No image asset was created.' . PHP_EOL; } }
Python
def main(client: GoogleAdsClient, customer_id: str) -> None: """Main method, to run this code example as a standalone application.""" # Download image from URL url: str = "https://gaagl.page.link/Eit5" image_content: bytes = get_image_bytes_from_url(url) asset_service: AssetServiceClient = client.get_service("AssetService") asset_operation: AssetOperation = client.get_type("AssetOperation") asset: Asset = asset_operation.create asset.type_ = client.enums.AssetTypeEnum.IMAGE asset.image_asset.data = image_content asset.image_asset.file_size = len(image_content) asset.image_asset.mime_type = client.enums.MimeTypeEnum.IMAGE_JPEG # Use your favorite image library to determine dimensions asset.image_asset.full_size.height_pixels = 315 asset.image_asset.full_size.width_pixels = 600 asset.image_asset.full_size.url = url # Provide a unique friendly name to identify your asset. # When there is an existing image asset with the same content but a different # name, the new name will be dropped silently. asset.name = "Marketing Image" mutate_asset_response: MutateAssetsResponse = asset_service.mutate_assets( customer_id=customer_id, operations=[asset_operation] ) print("Uploaded file(s):") row: MutateAssetResult for row in mutate_asset_response.results: print(f"\tResource name: {row.resource_name}")
Ruby
def upload_image_asset(customer_id) # GoogleAdsClient will read a config file from # ENV['HOME']/google_ads_config.rb when called without parameters client = Google::Ads::GoogleAds::GoogleAdsClient.new url = 'https://gaagl.page.link/Eit5' image_data = open(url) { |f| f.read } # Create the operation for uploading the image asset. asset_operation = client.operation.create_resource.asset do |asset| asset.type = :IMAGE asset.image_asset = client.resource.image_asset do |image_asset| image_asset.data = image_data image_asset.file_size = image_data.length() image_asset.mime_type = :IMAGE_JPEG image_asset.full_size = client.resource.image_dimension do |dimension| dimension.height_pixels = 315 dimension.width_pixels = 600 dimension.url = url end end # Provide a unique friendly name to identify your asset. # When there is an existing image asset with the same content but a different # name, the new name will be dropped silently. asset.name = "Marketing Image" end # Upload the image asset. response = client.service.asset.mutate_assets( customer_id: customer_id, operations: [asset_operation], ) puts "Uploaded image asset #{response.results.first.resource_name}." end
Perl
sub upload_image_asset { my ($api_client, $customer_id) = @_; # Create an image content. my $image_content = get_base64_data_from_url(IMAGE_URL); # Create an asset. my $asset = Google::Ads::GoogleAds::V26::Resources::Asset->new({ # Provide a unique friendly name to identify your asset. # When there is an existing image asset with the same content but a different # name, the new name will be dropped silently. name => "Marketing Image", type => IMAGE, imageAsset => Google::Ads::GoogleAds::V26::Common::ImageAsset->new({ data => $image_content })}); # Create an asset operation. my $asset_operation = Google::Ads::GoogleAds::V26::Services::AssetService::AssetOperation->new({ create => $asset }); # Issue a mutate request to add the asset. my $assets_response = $api_client->AssetService()->mutate({ customerId => $customer_id, operations => [$asset_operation]}); printf "The image asset with resource name '%s' was created.\n", $assets_response->{results}[0]{resourceName}; return 1; }
curl
Depois que o recurso é criado, a API retorna um objeto
MutateAssetResult que contém o
nome do recurso do novo ImageAsset. Esse nome de recurso é usado para referenciar o ImageAsset ao criar um anúncio baseado em recursos.
Para recuperar uma lista de recursos e os nomes deles, consulte
GoogleAdsService. Consulte
Buscar atributos e métricas de recursos
para mais detalhes.
Acompanhar resgates de promoções externas
A partir de v26, ao criar um
PromotionAsset, é possível preencher o campo imutável
(CREATE_ONLY) promotion_asset.external_redeem_info
do tipo ExternalRedeemInfo para acompanhar
os resgates de promoções off-line no sistema de ponto de venda (PDV) de um parceiro. Se a
conta tiver uma integração de resgate de promoção, ela vai determinar
qual variante de partner_promotion_id a API aceita. Como esses campos são
imutáveis, só é possível defini-los ao criar o PromotionAsset.
A tentativa de modificar ou limpar
external_redeem_info ou qualquer um dos subcampos em uma operação update retorna
um erro RequestError.IMMUTABLE_FIELD.
A mensagem ExternalRedeemInfo contém os seguintes campos imutáveis (CREATE_ONLY):
code_type(obrigatório): um valor de tipo enumeradoOfflinePromotionCodeTypeque especifica se o código promocional pode ser resgatado uma vez (SINGLE_USE_PROMOTION_CODE) ou várias vezes (MULTI_USE_PROMOTION_CODE).code_source(obrigatório): um valor de tipo enumeradoOfflinePromotionCodeSourceque especifica se o código promocional foi enviado pelo anunciante (CUSTOMER_UPLOADED) ou gerado pelo Google (GOOGLE_GENERATED). Quando você define esse campo comoGOOGLE_GENERATED, o campopartner_promotion_idé obrigatório. Caso contrário, a API retorna um erroFieldError.REQUIRED. Quando você define esse campo comoCUSTOMER_UPLOADED, o campopartner_promotion_idé opcional.partner_promotion_id: uma mensagemExternalPartnerIdque identifica a promoção no sistema de PDV do parceiro. Confirme qual formato de identificador sua integração de PDV usa e defina uma das seguintes variantes deoneof:int_value(int64): um identificador de número inteiro positivo (1ou maior). Um valor de0ou menos retorna um erroRangeError.TOO_LOW.string_value(string): um identificador de string de 1 a 50 caracteres imprimíveis. A API corta os espaços em branco à esquerda e à direita antes da validação. Portanto, uma string vazia ou somente com espaços em branco retorna um erroStringLengthError.TOO_SHORT, um valor cortado com mais de 50 caracteres retorna um erroStringLengthError.TOO_LONGe um valor com caracteres não imprimíveis retorna um erroStringFormatError.ILLEGAL_CHARS.
Se a integração de promoção da sua conta exigir uma variante específica de
partner_promotion_ide você definir a outra variante (int_valueem vez destring_valueoustring_valueem vez deint_value), a API vai retornar um erroAssetError.PARTNER_PROMOTION_ID_TYPE_INCOMPATIBLE.
É possível selecionar, filtrar (WHERE) e classificar (ORDER BY) por todos os quatro campos de folha
nos relatórios asset. Como o campo partner_promotion_id
é um oneof, no máximo um dos campos int_value ou string_value é
preenchido para um determinado recurso de promoção, e a variante não definida retorna null:
SELECT
asset.resource_name,
asset.id,
asset.name,
asset.promotion_asset.promotion_target,
asset.promotion_asset.external_redeem_info.code_source,
asset.promotion_asset.external_redeem_info.code_type,
asset.promotion_asset.external_redeem_info.partner_promotion_id.int_value,
asset.promotion_asset.external_redeem_info.partner_promotion_id.string_value
FROM asset
WHERE asset.type = 'PROMOTION'
Usar o recurso em um anúncio
Diferentes tipos de anúncios e campanhas são compatíveis com diferentes tipos de recursos, conforme mostrado na tabela a seguir:
| Tipos de anúncio/campanha e os tipos de recursos compatíveis | |
|---|---|
AppAd |
TextAssetImageAssetYoutubeVideoAssetMediaBundleAsset |
AppEngagementAd
|
TextAssetImageAssetYoutubeVideoAsset |
Demand Gen
|
TextAssetImageAssetYoutubeVideoAssetDemandGenCarouselCardAsset |
DisplayUploadAd
|
MediaBundleAsset |
| Campanha Performance Max |
TextAssetImageAssetMediaBundleAssetYoutubeVideoAssetCallToActionAsset
|
ResponsiveDisplayAd
|
TextAssetImageAssetYoutubeVideoAsset |
ResponsiveSearchAd
|
TextAsset (para títulos e descrições no criativo do anúncio)Os seguintes tipos de recurso podem ser vinculados no nível do cliente, da campanha ou do grupo de anúncios usando CustomerAsset, CampaignAsset ou AdGroupAsset, respectivamente, para serem veiculados com o anúncio como extensões:
Observação: os recursos de local e de local de afiliado são gerenciados de forma diferente, geralmente pelo CustomerAssetSet ou pelo CampaignAssetSet. Consulte
Recursos de local para
mais detalhes.
|
Cada um desses tipos de anúncio tem campos para definir os vários tipos de recursos compatíveis. Para TextAsset, um novo recurso de string é
criado inline no anúncio. Para todos os outros tipos de recursos, os recursos atuais são adicionados ao anúncio referenciando os nomes deles.
O exemplo a seguir demonstra como adicionar um
TextAsset e um
ImageAsset a um
ResponsiveDisplayAd. O
TextAsset é criado inline como os títulos e a descrição
do anúncio. O ImageAsset é especificado por
um nome de recurso.
Java
private void createAd( GoogleAdsClient googleAdsClient, long customerId, String adGroupResourceName) throws IOException { String marketingImageUrl = "https://gaagl.page.link/Eit5"; String marketingImageName = "Marketing Image"; String marketingImageResourceName = uploadAsset(googleAdsClient, customerId, marketingImageUrl, marketingImageName); String squareMarketingImageName = "Square Marketing Image"; String squareMarketingImageUrl = "https://gaagl.page.link/bjYi"; String squareMarketingImageResourceName = uploadAsset(googleAdsClient, customerId, squareMarketingImageUrl, squareMarketingImageName); // Creates the responsive display ad info object. ResponsiveDisplayAdInfo responsiveDisplayAdInfo = ResponsiveDisplayAdInfo.newBuilder() .addMarketingImages( AdImageAsset.newBuilder().setAsset(marketingImageResourceName).build()) .addSquareMarketingImages( AdImageAsset.newBuilder().setAsset(squareMarketingImageResourceName).build()) .addHeadlines(AdTextAsset.newBuilder().setText("Travel").build()) .setLongHeadline(AdTextAsset.newBuilder().setText("Travel the World").build()) .addDescriptions(AdTextAsset.newBuilder().setText("Take to the air!").build()) .setBusinessName("Interplanetary Cruises") // Optional: Call to action text. // Valid texts: https://support.google.com/adwords/answer/7005917 .setCallToActionText("Apply Now") // Optional: Sets the ad colors. .setMainColor("#0000ff") .setAccentColor("#ffff00") // Optional: Sets to false to strictly render the ad using the colors. .setAllowFlexibleColor(false) // Optional: Sets the format setting that the ad will be served in. .setFormatSetting(DisplayAdFormatSetting.NON_NATIVE) // Optional: Creates a logo image and sets it to the ad. /* .addLogoImages( AdImageAsset.newBuilder() .setAsset(StringValue.of("INSERT_LOGO_IMAGE_RESOURCE_NAME_HERE")) .build()) */ // Optional: Creates a square logo image and sets it to the ad. /* .addSquareLogoImages( AdImageAsset.newBuilder() .setAsset(StringValue.of("INSERT_SQUARE_LOGO_IMAGE_RESOURCE_NAME_HERE")) .build()) */ .build(); // Creates the ad. Ad ad = Ad.newBuilder() .setResponsiveDisplayAd(responsiveDisplayAdInfo) .addFinalUrls("http://www.example.com/") .build(); // Creates the ad group ad. AdGroupAd adGroupAd = AdGroupAd.newBuilder().setAdGroup(adGroupResourceName).setAd(ad).build(); // Creates the ad group ad operation. AdGroupAdOperation operation = AdGroupAdOperation.newBuilder().setCreate(adGroupAd).build(); // Creates the ad group ad service client. try (AdGroupAdServiceClient adGroupAdServiceClient = googleAdsClient.getLatestVersion().createAdGroupAdServiceClient()) { // Adds the ad group ad. MutateAdGroupAdsResponse response = adGroupAdServiceClient.mutateAdGroupAds( Long.toString(customerId), ImmutableList.of(operation)); System.out.printf( "Created ad group ad with resource name '%s'.%n", response.getResults(0).getResourceName()); } }
C#
private void CreateAd(GoogleAdsClient client, long customerId, string adGroupResourceName) { // Creates the ad group ad service client. AdGroupAdServiceClient adGroupAdServiceClient = client.GetService(Services.V26.AdGroupAdService); string marketingImageUrl = "https://gaagl.page.link/Eit5"; string marketingImageName = "Marketing Image"; string marketingImageResourceName = UploadAsset(client, customerId, marketingImageUrl, marketingImageName); string squareMarketingImageName = "Square Marketing Image"; string squareMarketingImageUrl = "https://gaagl.page.link/bjYi"; string squareMarketingImageResourceName = UploadAsset(client, customerId, squareMarketingImageUrl, squareMarketingImageName); // Creates the responsive display ad info object. ResponsiveDisplayAdInfo responsiveDisplayAdInfo = new ResponsiveDisplayAdInfo() { MarketingImages = { new AdImageAsset() { Asset = marketingImageResourceName } }, SquareMarketingImages = { new AdImageAsset() { Asset = squareMarketingImageResourceName } }, Headlines = { new AdTextAsset() { Text = "Travel" } }, LongHeadline = new AdTextAsset() { Text = "Travel the World" }, Descriptions = { new AdTextAsset() { Text = "Take to the air!" } }, BusinessName = "Interplanetary Cruises", // Optional: Call to action text. // Valid texts: https://support.google.com/adwords/answer/7005917 CallToActionText = "Apply Now", // Optional: Sets the ad colors. MainColor = "#0000ff", AccentColor = "#ffff00", // Optional: Sets to false to strictly render the ad using the colors. AllowFlexibleColor = false, // Optional: Sets the format setting that the ad will be served in. FormatSetting = DisplayAdFormatSetting.NonNative, // Optional: Creates a logo image and sets it to the ad. /* LogoImages = { new AdImageAsset() { Asset = "INSERT_LOGO_IMAGE_RESOURCE_NAME_HERE" }} */ // Optional: Creates a square logo image and sets it to the ad. /* SquareLogoImages = { new AdImageAsset() { Asset = "INSERT_SQUARE_LOGO_IMAGE_RESOURCE_NAME_HERE" }} */ }; // Creates the ad. Ad ad = new Ad() { ResponsiveDisplayAd = responsiveDisplayAdInfo, FinalUrls = { "http://www.example.com/" } }; // Creates the ad group ad. AdGroupAd adGroupAd = new AdGroupAd() { AdGroup = adGroupResourceName, Ad = ad }; // Creates the ad group ad operation. AdGroupAdOperation operation = new AdGroupAdOperation() { Create = adGroupAd }; // Adds the ad group ad. MutateAdGroupAdsResponse response = adGroupAdServiceClient.MutateAdGroupAds (customerId.ToString(), new[] { operation }); Console.WriteLine("Created ad group ad with resource name " + $"'{response.Results.First().ResourceName}'."); }
PHP
private static function createAd( GoogleAdsClient $googleAdsClient, int $customerId, string $adGroupResourceName ) { $marketingImageResourceName = self::uploadAsset( $googleAdsClient, $customerId, 'https://gaagl.page.link/Eit5', 'Marketing Image' ); $squareMarketingImageResourceName = self::uploadAsset( $googleAdsClient, $customerId, 'https://gaagl.page.link/bjYi', 'Square Marketing Image' ); // Creates the responsive display ad info object. $responsiveDisplayAdInfo = new ResponsiveDisplayAdInfo( [ 'marketing_images' => [new AdImageAsset(['asset' => $marketingImageResourceName])], 'square_marketing_images' => [new AdImageAsset( [ 'asset' => $squareMarketingImageResourceName ] )], 'headlines' => [new AdTextAsset(['text' => 'Travel'])], 'long_headline' => new AdTextAsset(['text' => 'Travel the World']), 'descriptions' => [new AdTextAsset(['text' => 'Take to the air!'])], 'business_name' => 'Interplanetary Cruises', // Optional: Call to action text. // Valid texts: https://support.google.com/google-ads/answer/7005917 'call_to_action_text' => 'Apply Now', // Optional: Sets the ad colors. 'main_color' => '#0000ff', 'accent_color' => '#ffff00', // Optional: Sets to false to strictly render the ad using the colors. 'allow_flexible_color' => false, // Optional: Sets the format setting that the ad will be served in. 'format_setting' => DisplayAdFormatSetting::NON_NATIVE // Optional: Creates a logo image and sets it to the ad. // 'logo_images' => [new AdImageAsset([ // 'asset' => 'INSERT_LOGO_IMAGE_RESOURCE_NAME_HERE' // ])], // Optional: Creates a square logo image and sets it to the ad. // 'square_logo_images' => [new AdImageAsset([ // 'asset' => 'INSERT_SQUARE_LOGO_IMAGE_RESOURCE_NAME_HERE' // ])] ] ); // Creates a new ad group ad. $adGroupAd = new AdGroupAd( [ 'ad' => new Ad( [ 'responsive_display_ad' => $responsiveDisplayAdInfo, 'final_urls' => ['http://www.example.com/'] ] ), 'ad_group' => $adGroupResourceName ] ); // Creates an ad group ad operation. $adGroupAdOperation = new AdGroupAdOperation(); $adGroupAdOperation->setCreate($adGroupAd); // Issues a mutate request to add the ad group ad. $adGroupAdServiceClient = $googleAdsClient->getAdGroupAdServiceClient(); $response = $adGroupAdServiceClient->mutateAdGroupAds( MutateAdGroupAdsRequest::build($customerId, [$adGroupAdOperation]) ); /** * @var AdGroupAd $addedAdGroupAd */ $addedAdGroupAd = $response->getResults()[0]; printf( "Created ad group ad with resource name '%s'.%s", $addedAdGroupAd->getResourceName(), PHP_EOL ); }
Python
def create_ad( client: GoogleAdsClient, customer_id: str, ad_group_resource_name: str ) -> None: """Creates the responsive display ad. Args: client: An initialized GoogleAds client. customer_id: The Google Ads customer ID. ad_group_resource_name: The resource name of the target ad group. """ # Get the AdGroupAdService client. ad_group_ad_service: AdGroupAdServiceClient = client.get_service( "AdGroupAdService" ) # Upload image assets for the ad. marketing_image_resource_name: str = upload_image_asset( client, customer_id, "https://gaagl.page.link/Eit5", "Marketing Image" ) square_marketing_image_resource_name: str = upload_image_asset( client, customer_id, "https://gaagl.page.link/bjYi", "Square Marketing Image", ) # Create the relevant asset objects for the ad. marketing_image: AdImageAsset = client.get_type("AdImageAsset") marketing_image.asset = marketing_image_resource_name square_marketing_image: AdImageAsset = client.get_type("AdImageAsset") square_marketing_image.asset = square_marketing_image_resource_name headline: AdTextAsset = client.get_type("AdTextAsset") headline.text = "Travel" description: AdTextAsset = client.get_type("AdTextAsset") description.text = "Take to the air!" # Create an ad group ad operation and set the ad group ad values. ad_group_ad_operation: AdGroupAdOperation = client.get_type( "AdGroupAdOperation" ) ad_group_ad: AdGroupAd = ad_group_ad_operation.create ad_group_ad.ad_group = ad_group_resource_name ad_group_ad.ad.final_urls.append("http://www.example.com/") # Configure the responsive display ad info object. responsive_display_ad_info: ResponsiveDisplayAdInfo = ( ad_group_ad.ad.responsive_display_ad ) responsive_display_ad_info.marketing_images.append(marketing_image) responsive_display_ad_info.square_marketing_images.append( square_marketing_image ) responsive_display_ad_info.headlines.append(headline) responsive_display_ad_info.long_headline.text = "Travel the World" responsive_display_ad_info.descriptions.append(description) responsive_display_ad_info.business_name = "Interplanetary Cruises" # Optional: Call to action text. # Valid texts: https://support.google.com/google-ads/answer/7005917 responsive_display_ad_info.call_to_action_text = "Apply Now" # Optional: Set the ad colors. responsive_display_ad_info.main_color = "#0000ff" responsive_display_ad_info.accent_color = "#ffff00" # Optional: Set to false to strictly render the ad using the colors. responsive_display_ad_info.allow_flexible_color = False # Optional: Set the format setting that the ad will be served in. responsive_display_ad_info.format_setting = ( client.enums.DisplayAdFormatSettingEnum.NON_NATIVE ) # Optional: Create a logo image and set it to the ad. # logo_image = client.get_type("AdImageAsset") # logo_image.asset = "INSERT_LOGO_IMAGE_RESOURCE_NAME_HERE" # responsive_display_ad_info.logo_images.append(logo_image) # Optional: Create a square logo image and set it to the ad. # square_logo_image = client.get_type("AdImageAsset") # square_logo_image.asset = "INSERT_SQUARE_LOGO_IMAGE_RESOURCE_NAME_HERE" # responsive_display_ad_info.square_logo_images.append(square_logo_image) # Issue a mutate request to add the ad group ad. ad_group_ad_response: MutateAdGroupAdsResponse = ( ad_group_ad_service.mutate_ad_group_ads( customer_id=customer_id, operations=[ad_group_ad_operation] ) ) print( "Created ad group ad with resource name " f"'{ad_group_ad_response.results[0].resource_name}'." )
Ruby
def create_ad(client, customer_id, ad_group_resource_name) marketing_image_url = "https://gaagl.page.link/Eit5" square_marketing_image_url = "https://gaagl.page.link/bjYi" marketing_image_asset_resource_name = upload_asset( client, customer_id, marketing_image_url, "Marketing Image" ) square_marketing_image_asset_resource_name = upload_asset( client, customer_id, square_marketing_image_url, "Square Marketing Image" ) # Creates an ad group ad operation. operation = client.operation.create_resource.ad_group_ad do |aga| aga.ad_group = ad_group_resource_name aga.status = :PAUSED aga.ad = client.resource.ad do |a| a.final_urls << "https://www.example.com" # Creates the responsive display ad info object. a.responsive_display_ad = client.resource.responsive_display_ad_info do |rda| rda.headlines << client.resource.ad_text_asset do |ata| ata.text = "Travel" end rda.long_headline = client.resource.ad_text_asset do |ata| ata.text = "Travel the World" end rda.descriptions << client.resource.ad_text_asset do |ata| ata.text = "Take to the air!" end rda.business_name = "Interplanetary Cruises" rda.marketing_images << client.resource.ad_image_asset do |aia| aia.asset = marketing_image_asset_resource_name end rda.square_marketing_images << client.resource.ad_image_asset do |aia| aia.asset = square_marketing_image_asset_resource_name end # Optional: Call to action text. # Valid texts: https://support.google.com/google-ads/answer/7005917 rda.call_to_action_text = "Apply Now" # Optional: Sets the ad colors. rda.main_color = "#0000ff" rda.accent_color = "#ffff00" # Optional: Sets to false to strictly render the ad using the colors. rda.allow_flexible_color = false # Optional: Sets the format setting that the ad will be served in. rda.format_setting = :NON_NATIVE # Optional: Creates a logo image and sets it to the ad. # rda.logo_images << client.resource.ad_image_asset do |aia| # aia.asset = "INSERT_LOGO_IMAGE_RESOURCE_NAME_HERE" # end # Optional: Creates a square logo image and sets it to the ad. # rda.square_logo_images << client.resource.ad_image_asset do |aia| # aia.asset = "INSERT_SQUARE_LOGO_IMAGE_RESOURCE_NAME_HERE" # end end end end # Issues a mutate request to add the ad group ad. response = client.service.ad_group_ad.mutate_ad_group_ads( customer_id: customer_id, operations: [operation] ) # Prints out some information about the newly created ad. resource_name = response.results.first.resource_name puts "Created ad group ad: #{resource_name}" resource_name end
Perl
sub create_ad { my ($api_client, $customer_id, $ad_group_resource_name) = @_; my $marketing_image_resource_name = upload_asset( $api_client, $customer_id, "https://gaagl.page.link/Eit5", "Marketing Image" ); my $square_marketing_image_resource_name = upload_asset( $api_client, $customer_id, "https://gaagl.page.link/bjYi", "Square Marketing Image" ); # Create the responsive display ad info object. my $responsive_display_ad_info = Google::Ads::GoogleAds::V26::Common::ResponsiveDisplayAdInfo->new({ marketingImages => [ Google::Ads::GoogleAds::V26::Common::AdImageAsset->new({ asset => $marketing_image_resource_name }) ], squareMarketingImages => [ Google::Ads::GoogleAds::V26::Common::AdImageAsset->new({ asset => $square_marketing_image_resource_name }) ], headlines => [ Google::Ads::GoogleAds::V26::Common::AdTextAsset->new({ text => "Travel" }) ], longHeadline => Google::Ads::GoogleAds::V26::Common::AdTextAsset->new({ text => "Travel the World" } ), descriptions => [ Google::Ads::GoogleAds::V26::Common::AdTextAsset->new({ text => "Take to the air!" }) ], businessName => "Interplanetary Cruises", # Optional: Call to action text. # Valid texts: https://support.google.com/google-ads/answer/7005917 callToActionText => "Apply Now", # Optional: Set the ad colors. mainColor => "#0000ff", accentColor => "#ffff00", # Optional: Set to false to strictly render the ad using the colors. allowFlexibleColor => "false", # Optional: Set the format setting that the ad will be served in. formatSetting => NON_NATIVE, # Optional: Create a logo image and set it to the ad. # logoImages => [ # Google::Ads::GoogleAds::V26::Common::AdImageAsset->new({ # asset => "INSERT_LOGO_IMAGE_RESOURCE_NAME_HERE" # }) # ], # Optional: Create a square logo image and set it to the ad. # squareLogoImages => [ # Google::Ads::GoogleAds::V26::Common::AdImageAsset->new({ # asset => "INSERT_SQUARE_LOGO_IMAGE_RESOURCE_NAME_HERE" # }) # ] }); # Create an ad group ad. my $ad_group_ad = Google::Ads::GoogleAds::V26::Resources::AdGroupAd->new({ adGroup => $ad_group_resource_name, ad => Google::Ads::GoogleAds::V26::Resources::Ad->new({ responsiveDisplayAd => $responsive_display_ad_info, finalUrls => ["http://www.example.com/"]})}); # Create an ad group ad operation. my $ad_group_ad_operation = Google::Ads::GoogleAds::V26::Services::AdGroupAdService::AdGroupAdOperation ->new({create => $ad_group_ad}); # Issue a mutate request to add the ad group ad. my $ad_group_ads_response = $api_client->AdGroupAdService()->mutate({ customerId => $customer_id, operations => [$ad_group_ad_operation]}); printf "Created ad group ad with resource name '%s'.\n", $ad_group_ads_response->{results}[0]{resourceName}; }
curl
Recomendações de recursos
As recomendações podem melhorar seus recursos de algumas maneiras:
Eles podem sugerir recursos para você, que podem ser adicionados à sua campanha chamando
RecommendationService.ApplyRecommendation. Por exemplo, é possível recuperar recomendações deCALLOUT_ASSET,SITELINK_ASSET,CALL_ASSET,LEAD_FORM_ASSETeRESPONSIVE_SEARCH_AD_ASSETe aplicá-las para anexar os recursos recomendados à campanha, ao grupo de anúncios ou ao anúncio relevante.Eles ajudam a identificar áreas em que você pode atualizar seus recursos para melhorar a qualidade geral dos seus anúncios responsivos de pesquisa ou das suas campanhas Performance Max. Por exemplo, é possível recuperar recomendações de
IMPROVE_PERFORMANCE_MAX_AD_STRENGTHpara saber quais grupos de recursos devem ser atualizados para melhorar a qualidade.
Acesse o guia Pontuação de otimização e recomendações para mais informações.