اکثر انواع داراییها باید بااستفاده از
AssetService ایجاد شوند تا بتوان از آنها در آگهی استفاده کرد.
نوع TextAsset استثنا است زیرا
درطول ایجاد آگهی بهصورت درونخطی ایجاد میشود. همه انواع دیگر باید ابتدا در حساب Google Ads بارگذاری شوند تا بتوان از آنها استفاده کرد.
سطوح ارتباط دارایی
داراییها با پیوند دادن آنها به نهادهای مختلف در سلسلهمراتب حساب Google Ads شما برای ارائه دردسترس قرار میگیرند. سطح ارتباط به نوع دارایی و نوع پویش بستگی دارد. منابع رایج برای مدیریت این پیوندها عبارتاند از:
CustomerAsset: برای داراییهای پیوندشده در سطح حساب.CampaignAsset: برای داراییهای پیوندشده به پویشی خاص.AdGroupAsset: برای داراییهای پیوندشده به گروه آگهی خاص.AssetGroupAsset: برای داراییهای پیوندشده به گروه دارایی در پویشهای «عملکرد بیشینه».
سرویس و منبع خاصی که باید استفاده شود به آنچه میخواهید بهدست آورید بستگی دارد.
داراییهای نمانام «عملکرد بیشینه»
درحالیکه بسیاری از داراییها در پویشهای «بیشینهسازی عملکرد» بااستفاده از AssetGroupAsset به گروههای دارایی پیوند داده میشوند، اگر رهنمودهای نمانام برای پویش فعال شده باشد، داراییهای نام کسبوکار و نشانواره کسبوکار استثنا هستند. در این حالت،
آنها مستقیماً در سطح پویش بااستفاده از
CampaignAsset با انواع فیلد
BUSINESS_NAME و LOGO بهترتیب پیوند داده میشوند. اگر رهنمودهای نمانام برای پویش غیرفعال باشد، این داراییها باید بااستفاده از AssetGroupAsset پیوست شوند. برای جزئیات بیشتر،
داراییها در «عملکرد بیشینه» را ببینید.
ایجاد دارایی
هنگام ایجاد داراییهای بسته رسانهای و تصویری، نامهای منحصربهفرد الزامی است. اگر نام موجودی را ارائه دهید، نام جدیدی با افزودن رشتهای غیرتکراری به نام موجود ایجاد خواهد شد. اکیداً توصیه میکنیم از نامهای منحصربهفردی استفاده کنید که توصیفی باشند تا با رشد مجموعه شما، مدیریت و شناسایی داراییهای فردی آسانتر شود.
نکته کلیدی: AssetService از عملیات create و update برای بسیاری از انواع داراییها (مانند سایتپیوندها، توضیحات دارایی، یا تبلیغات) پشتیبانی میکند، درحالیکه داراییهای تغییرناپذیر مانند TextAsset و ImageAsset پساز بارگذاری در حساب Google Ads نمیتوانند در محل اصلاح شوند. برای مدیریت ارتباط بین داراییهای تکی و آگهیها یا پویشها،
باید از عملیات سطح آگهی یا سطح نهاد استفاده کنید.
مثال زیر نحوه ایجاد دارایی تصویری جدید از نشانی وب دادههای تصویر خام را نشان میدهد.
جاوا
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
پرل
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
پساز ایجاد دارایی، API شیء MutateAssetResult را برمیگرداند که حاوی نام منبع ImageAsset جدید است. این نام منبع برای ارجاع به ImageAsset هنگام ایجاد آگهی داراییمبنا استفاده میشود.
میتوانید با پرسمان کردن GoogleAdsService، فهرستی از داراییهای موجود و نام منابع آنها را بازیابی کنید. برای جزئیات بیشتر، به
واکشی ویژگیها و سنجههای دارایی
مراجعه کنید.
پیگیری پسخرید تبلیغات خارجی
از v26، وقتی
PromotionAsset ایجاد میکنید، میتوانید فیلد تغییرناپذیر
(CREATE_ONLY) promotion_asset.external_redeem_info
از نوع ExternalRedeemInfo را پر کنید تا
تبدیلهای تبلیغ آفلاین را در سیستم پایانه فروش (POS) شریک ردگیری کنید. اگر
حساب دارای یکپارچهسازی پسخرید تبلیغ باشد، آن یکپارچهسازی تعیین میکند
کدام نوع partner_promotion_id را میانای برنامهسازی کاربردی میپذیرد. چون این فیلدها تغییرناپذیرند، فقط هنگام ایجاد PromotionAsset میتوانید آنها را تنظیم کنید.
تلاش برای اصلاح یا پاک کردن
external_redeem_info یا هرکدام از زیرفیلدهای آن در عملیات update
خطای RequestError.IMMUTABLE_FIELD را برمیگرداند.
پیام ExternalRedeemInfo حاوی فیلدهای تغییرناپذیر (CREATE_ONLY) زیر است:
code_type(الزامی): مقدار شمارشیOfflinePromotionCodeTypeکه مشخص میکند کد ترویجی یکبار (SINGLE_USE_PROMOTION_CODE) یا چندبار (MULTI_USE_PROMOTION_CODE) قابل پسخرید است.code_source(الزامی): یک مقدار شمارشیOfflinePromotionCodeSourceکه مشخص میکند کد ترویجی توسط تبلیغکننده بارگذاری شده است (CUSTOMER_UPLOADED) یا توسط Google تولید شده است (GOOGLE_GENERATED). وقتی این فیلد را رویGOOGLE_GENERATEDتنظیم میکنید، فیلدpartner_promotion_idالزامی است (درغیراینصورت، API خطایFieldError.REQUIREDرا برمیگرداند). وقتی این فیلد را رویCUSTOMER_UPLOADEDتنظیم میکنید، فیلدpartner_promotion_idاختیاری است.partner_promotion_id: پیامExternalPartnerIdکه تبلیغ را در سیستم پایانه فروش شریک شناسایی میکند. تأیید کنید که ادغام POS شما از کدام قالب شناسه استفاده میکند، سپس یکی از انواعoneofزیر را تنظیم کنید:int_value(int64): شناسه عدد صحیح مثبت (1یا بیشتر). مقدار0یا کمتر، خطایRangeError.TOO_LOWرا برمیگرداند.-
string_value(string): شناسه رشتهای با ۱ تا ۵۰ نویسه قابلچاپ. API قبلاز اعتبارسنجی، فاصلههای خالی ابتدا و انتهای رشته را حذف میکند، بنابراین رشته خالی یا رشتهای که فقط حاوی فاصله خالی باشد خطایStringLengthError.TOO_SHORTرا برمیگرداند، مقدار حذفشدهای که طولانیتر از ۵۰ نویسه باشد خطایStringLengthError.TOO_LONGرا برمیگرداند، و مقداری که حاوی نویسههای غیرقابلچاپ باشد خطایStringFormatError.ILLEGAL_CHARSرا برمیگرداند.
اگر ادغام تبلیغ حسابتان به گونه خاصی از
partner_promotion_idنیاز دارد و شما گونه دیگری را تنظیم کنید (int_valueبهجایstring_value، یاstring_valueبهجایint_value)، API خطایAssetError.PARTNER_PROMOTION_ID_TYPE_INCOMPATIBLEبرمیگرداند.
میتوانید براساس هر چهار فیلد برگ در گزارشهای asset انتخاب، فیلتر (WHERE)، و مرتبسازی (ORDER BY) کنید. چون فیلد partner_promotion_id
oneof است، حداکثر یکی از فیلدهای int_value یا string_value برای دارایی تبلیغاتی دادهشده پر میشود و نوع تنظیمنشده 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'
استفاده از دارایی در آگهی
انواع مختلف آگهی و پویش از انواع مختلف دارایی پشتیبانی میکنند، همانطور که در جدول زیر نشان داده شده است:
| انواع آگهی/ پویش و انواع داراییهایی که پشتیبانی میکنند | |
|---|---|
AppAd |
TextAssetImageAssetYoutubeVideoAssetMediaBundleAsset |
AppEngagementAd
|
TextAssetImageAssetYoutubeVideoAsset |
Demand Gen
|
TextAssetImageAssetYoutubeVideoAssetDemandGenCarouselCardAsset |
DisplayUploadAd
|
MediaBundleAsset |
| پویش «عملکرد بیشینه» |
TextAssetImageAssetMediaBundleAssetYoutubeVideoAssetCallToActionAsset
|
ResponsiveDisplayAd
|
TextAssetImageAssetYoutubeVideoAsset |
ResponsiveSearchAd
|
TextAsset (برای عنوانها، شرحها در طرحآگهی)انواع دارایی زیر را میتوان در سطح مشتری، پویش، یا گروه آگهی بهترتیب بااستفاده از CustomerAsset،
CampaignAsset، یا AdGroupAsset پیوند داد تا بهعنوان افزونه با آگهی ارائه شوند:
توجه: داراییهای مکان و داراییهای مکانهای فروشیاری بهطور متفاوتی مدیریت میشوند، اغلب ازطریق CustomerAssetSet یا
CampaignAssetSet. برای جزئیات،
داراییهای مکان را
ببینید.
|
هرکدام از این انواع آگهی فیلدهایی برای تنظیم انواع مختلف داراییهایی که پشتیبانی میکند دارد. برای TextAsset، دارایی رشتهای جدیدی
درون آگهی ایجاد میشود. برای همه انواع داراییهای دیگر، داراییهای موجود با ارجاع به نام منابعشان به آگهی اضافه میشوند.
مثال زیر افزودن
TextAsset و
ImageAsset را به
ResponsiveDisplayAd نشان میدهد. TextAsset بهصورت درونخطی بهعنوان عنوانها و شرح آگهی ایجاد میشود. ImageAsset با نام منبع مشخص میشود.
جاوا
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
پرل
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
توصیههای دارایی
توصیهها میتوانند داراییهایتان را به چند روش بهبود دهند:
آنها میتوانند داراییهایی را به شما پیشنهاد دهند که میتوانید با تماس با
RecommendationService.ApplyRecommendationآنها را به پویش خود اضافه کنید. برای مثال، میتوانید توصیههایCALLOUT_ASSET،SITELINK_ASSET،CALL_ASSET،LEAD_FORM_ASSET، وRESPONSIVE_SEARCH_AD_ASSETرا بازیابی کنید و سپس آنها را اعمال کنید تا داراییهای توصیهشده را به پویش، گروه آگهی، یا آگهی مربوطه پیوست کنید.این موارد میتوانند به شما کمک کنند تا حوزههایی را که میتوانید داراییهایتان را در آنها بهروز کنید شناسایی کنید تا قدرت کلی آگهیهای جستجوی واکنشگرا یا پویشهای «عملکرد بیشینه» خود را بهبود بخشید. برای مثال، میتوانید
IMPROVE_PERFORMANCE_MAX_AD_STRENGTHتوصیه را بازیابی کنید تا ببینید کدام گروههای دارایی باید بهروزرسانی شوند تا قدرتشان بهبود یابد.
برای اطلاعات بیشتر، به راهنمای امتیاز بهینهسازی و توصیهها مراجعه کنید.