Hầu hết các loại thành phần phải được tạo bằng AssetService thì mới có thể sử dụng trong quảng cáo.
Loại TextAsset là ngoại lệ vì loại này được tạo cùng lúc với quá trình tạo quảng cáo. Bạn phải tải tất cả các loại khác lên một tài khoản Google Ads trước khi có thể sử dụng.
Cấp liên kết thành phần
Thành phần được cung cấp để phân phát bằng cách liên kết chúng với các thực thể khác nhau trong hệ phân cấp tài khoản Google Ads của bạn. Cấp liên kết phụ thuộc vào loại thành phần và loại chiến dịch. Sau đây là một số tài nguyên phổ biến để quản lý các đường liên kết này:
CustomerAsset: Đối với các thành phần được liên kết ở cấp tài khoản.CampaignAsset: Đối với các thành phần được liên kết với một chiến dịch cụ thể.AdGroupAsset: Đối với các thành phần được liên kết với một nhóm quảng cáo cụ thể.AssetGroupAsset: Đối với những thành phần được liên kết với một nhóm thành phần trong chiến dịch Tối đa hoá hiệu suất.
Dịch vụ và tài nguyên cụ thể cần sử dụng sẽ phụ thuộc vào mục tiêu bạn muốn đạt được.
Tài sản thương hiệu của chiến dịch Tối đa hoá hiệu suất
Mặc dù nhiều thành phần trong chiến dịch Tối đa hoá hiệu suất được liên kết với các nhóm thành phần bằng AssetGroupAsset, nhưng thành phần Tên doanh nghiệp và Biểu trưng doanh nghiệp là ngoại lệ nếu bạn bật nguyên tắc trình bày thương hiệu cho chiến dịch. Trong trường hợp này,
chúng được liên kết trực tiếp ở cấp chiến dịch bằng cách sử dụng
CampaignAsset với các loại trường
BUSINESS_NAME và LOGO tương ứng. Nếu bạn tắt nguyên tắc trình bày thương hiệu cho chiến dịch, thì bạn phải đính kèm các thành phần này bằng AssetGroupAsset. Hãy xem bài viết Thành phần trong chiến dịch Tối đa hoá hiệu suất để biết thêm thông tin chi tiết.
Tạo một tài sản
Bạn phải đặt tên riêng biệt khi tạo thành phần hình ảnh và thành phần gói nội dung nghe nhìn. Nếu bạn cung cấp tên hiện có, thì một tên mới sẽ được tạo bằng cách thêm một chuỗi riêng biệt vào tên hiện có. Bạn nên sử dụng tên riêng biệt và mang tính mô tả để dễ dàng quản lý và xác định từng thành phần khi bộ sưu tập của bạn ngày càng lớn.
Điểm mấu chốt: AssetService hỗ trợ các thao tác create và update cho nhiều loại thành phần (chẳng hạn như đường liên kết của trang web, chú thích hoặc chương trình khuyến mãi), trong khi các thành phần không thể thay đổi như TextAsset và ImageAsset không thể sửa đổi tại chỗ sau khi tải lên tài khoản Google Ads. Bạn phải sử dụng các thao tác ở cấp quảng cáo hoặc cấp thực thể để quản lý mối liên kết giữa từng thành phần và quảng cáo hoặc chiến dịch.
Ví dụ sau đây cho biết cách tạo thành phần hình ảnh mới từ URL của dữ liệu hình ảnh thô.
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
Sau khi tạo thành phần, API sẽ trả về một đối tượng MutateAssetResult chứa tên tài nguyên của ImageAsset mới. Tên tài nguyên này được dùng để tham chiếu đến ImageAsset khi tạo quảng cáo dựa trên thành phần.
Bạn có thể truy xuất danh sách các thành phần hiện có và tên tài nguyên của các thành phần đó bằng cách truy vấn GoogleAdsService. Hãy xem phần
Tìm nạp thuộc tính và chỉ số của thành phần
để biết thêm thông tin chi tiết.
Theo dõi số lượt sử dụng chương trình khuyến mãi bên ngoài
Kể từ v26, khi tạo PromotionAsset, bạn có thể điền vào trường promotion_asset.external_redeem_info không thể thay đổi (CREATE_ONLY) thuộc loại ExternalRedeemInfo để theo dõi các lượt sử dụng chương trình khuyến mãi ngoại tuyến trong hệ thống điểm bán hàng (POS) của đối tác. Nếu tài khoản có chế độ tích hợp sử dụng khuyến mãi, thì chế độ tích hợp đó sẽ xác định biến thể partner_promotion_id mà API chấp nhận. Vì các trường này không thể thay đổi, nên bạn chỉ có thể đặt các trường này khi tạo PromotionAsset.
Nếu bạn cố gắng sửa đổi hoặc xoá external_redeem_info hoặc bất kỳ trường con nào của trường này trong một thao tác update, thì hệ thống sẽ trả về lỗi RequestError.IMMUTABLE_FIELD.
Thông báo ExternalRedeemInfo chứa các trường không thể thay đổi (CREATE_ONLY) sau đây:
code_type(bắt buộc): Giá trị enumOfflinePromotionCodeTypechỉ định liệu mã khuyến mãi có thể được sử dụng một lần (SINGLE_USE_PROMOTION_CODE) hay nhiều lần (MULTI_USE_PROMOTION_CODE).code_source(bắt buộc): Giá trị enumOfflinePromotionCodeSourcecho biết mã khuyến mãi là do nhà quảng cáo tải lên (CUSTOMER_UPLOADED) hay do Google tạo (GOOGLE_GENERATED). Khi bạn đặt trường này thànhGOOGLE_GENERATED, trườngpartner_promotion_idlà bắt buộc (nếu không, API sẽ trả về lỗiFieldError.REQUIRED). Khi bạn đặt trường này thànhCUSTOMER_UPLOADED, trườngpartner_promotion_idlà không bắt buộc.partner_promotion_id: Thông báoExternalPartnerIdxác định chương trình khuyến mãi trong hệ thống POS của đối tác. Xác nhận định dạng giá trị nhận dạng mà quy trình tích hợp POS của bạn sử dụng, sau đó đặt một trong các biến thểoneofsau:int_value(int64): Giá trị nhận dạng số nguyên dương (1trở lên). Giá trị từ0trở xuống sẽ trả về lỗiRangeError.TOO_LOW.string_value(string): Giá trị nhận dạng chuỗi gồm 1 đến 50 ký tự có thể in. API cắt bỏ khoảng trắng ở đầu và cuối trước khi xác thực, vì vậy, một chuỗi trống hoặc chỉ có khoảng trắng sẽ trả về lỗiStringLengthError.TOO_SHORT, giá trị đã cắt bỏ dài hơn 50 ký tự sẽ trả về lỗiStringLengthError.TOO_LONGvà giá trị có ký tự không in được sẽ trả về lỗiStringFormatError.ILLEGAL_CHARS.
Nếu chế độ tích hợp chương trình khuyến mãi của tài khoản yêu cầu một biến thể
partner_promotion_idcụ thể và bạn đặt biến thể khác (int_valuethay vìstring_valuehoặcstring_valuethay vìint_value), thì API sẽ trả về lỗiAssetError.PARTNER_PROMOTION_ID_TYPE_INCOMPATIBLE.
Bạn có thể chọn, lọc (WHERE) và sắp xếp (ORDER BY) theo cả 4 trường lá trong báo cáo asset. Vì trường partner_promotion_id là oneof, nên nhiều nhất một trong các trường int_value hoặc string_value được điền sẵn cho một thành phần chương trình khuyến mãi nhất định và biến thể chưa đặt sẽ trả về 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'
Sử dụng thành phần trong quảng cáo
Mỗi loại quảng cáo và chiến dịch hỗ trợ các loại thành phần khác nhau như trong bảng sau:
| Các loại quảng cáo/chiến dịch và loại thành phần được hỗ trợ | |
|---|---|
AppAd |
TextAssetImageAssetYoutubeVideoAssetMediaBundleAsset |
AppEngagementAd
|
TextAssetImageAssetYoutubeVideoAsset |
Demand Gen
|
TextAssetImageAssetYoutubeVideoAssetDemandGenCarouselCardAsset |
DisplayUploadAd
|
MediaBundleAsset |
| Chiến dịch Tối đa hoá hiệu suất |
TextAssetImageAssetMediaBundleAssetYoutubeVideoAssetCallToActionAsset
|
ResponsiveDisplayAd
|
TextAssetImageAssetYoutubeVideoAsset |
ResponsiveSearchAd
|
TextAsset (cho dòng tiêu đề, nội dung mô tả trong mẫu quảng cáo)Bạn có thể liên kết các loại thành phần sau đây ở cấp khách hàng, chiến dịch hoặc nhóm quảng cáo bằng cách sử dụng CustomerAsset, CampaignAsset hoặc AdGroupAsset tương ứng để phân phát cùng với quảng cáo dưới dạng phần mở rộng:
Lưu ý: Thành phần vị trí và thành phần vị trí của đơn vị liên kết được quản lý theo cách khác nhau, thường là thông qua CustomerAssetSet hoặc
CampaignAssetSet. Hãy xem bài viết
Thành phần vị trí để biết
thông tin chi tiết.
|
Mỗi loại quảng cáo này đều có các trường để đặt nhiều loại thành phần mà quảng cáo đó hỗ trợ. Đối với TextAsset, một thành phần chuỗi mới sẽ được tạo cùng dòng trong quảng cáo. Đối với tất cả các loại thành phần khác, các thành phần hiện có sẽ được thêm vào quảng cáo bằng cách tham chiếu tên tài nguyên của chúng.
Ví dụ sau đây minh hoạ cách thêm
TextAsset và
ImageAsset vào
ResponsiveDisplayAd. TextAsset được tạo cùng dòng dưới dạng dòng tiêu đề và nội dung mô tả của quảng cáo. ImageAsset được chỉ định bằng tên tài nguyên.
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
Đề xuất về thành phần của mẫu quảng cáo
Đề xuất có thể cải thiện các thành phần của bạn theo một số cách:
Họ có thể đề xuất thành phần cho bạn và bạn có thể thêm các thành phần đó vào chiến dịch bằng cách gọi phương thức
RecommendationService.ApplyRecommendation. Ví dụ: bạn có thể truy xuất các đề xuấtCALLOUT_ASSET,SITELINK_ASSET,CALL_ASSET,LEAD_FORM_ASSETvàRESPONSIVE_SEARCH_AD_ASSET, sau đó áp dụng các đề xuất đó để đính kèm thành phần được đề xuất vào chiến dịch, nhóm quảng cáo hoặc quảng cáo có liên quan.Những thông tin chi tiết này có thể giúp bạn xác định những khía cạnh mà bạn có thể cập nhật thành phần để nâng cao độ mạnh tổng thể của quảng cáo tìm kiếm thích ứng hoặc chiến dịch Tối đa hoá hiệu suất. Ví dụ: bạn có thể truy xuất các đề xuất
IMPROVE_PERFORMANCE_MAX_AD_STRENGTHđể xem những nhóm thành phần nào cần được cập nhật nhằm cải thiện độ mạnh.
Hãy tham khảo hướng dẫn về Điểm tối ưu hoá và các đề xuất để biết thêm thông tin.