يجب إنشاء معظم أنواع مواد العرض باستخدام
AssetService قبل أن يصبح بالإمكان استخدامها في إعلان.
يُعدّ النوع TextAsset استثناءً لأنّه يتم إنشاؤه بشكل مضمّن أثناء إنشاء الإعلان. ويجب أولاً تحميل جميع الأنواع الأخرى إلى حساب على "إعلانات Google" قبل استخدامها.
مستويات ارتباط مواد العرض
تتم إتاحة مواد العرض للعرض من خلال ربطها بكيانات مختلفة في التسلسل الهرمي لحسابك على "إعلانات Google". يعتمد مستوى الربط على نوع مادة العرض ونوع الحملة. تشمل المراجع الشائعة لإدارة هذه الروابط ما يلي:
CustomerAsset: لمواد العرض المرتبطة على مستوى الحسابCampaignAsset: لمواد العرض المرتبطة بحملة معيّنةAdGroupAsset: بالنسبة إلى مواد العرض المرتبطة بمجموعة إعلانية معيّنة.AssetGroupAsset: بالنسبة إلى مواد العرض المرتبطة بمجموعة مواد عرض ضمن حملات الأداء الأفضل.
ستعتمد الخدمة والمورد المحددان للاستخدام على ما تحاول تحقيقه.
مواد العرض الخاصة بالعلامة التجارية في "حملات الأداء الأفضل"
في حين أنّ العديد من مواد العرض في حملات الأداء الأفضل تكون مرتبطة بمجموعات مواد العرض باستخدام AssetGroupAsset، فإنّ مواد عرض اسم المؤسسة وشعار المؤسسة تُعدّ استثناءً إذا تم تفعيل إرشادات العلامة التجارية للحملة. في هذه الحالة، يتم ربطها مباشرةً على مستوى الحملة باستخدام CampaignAsset مع نوعَي الحقل BUSINESS_NAME وLOGO على التوالي. إذا تم إيقاف إرشادات العلامة التجارية للحملة، يجب إرفاق مواد العرض هذه باستخدام AssetGroupAsset. لمزيد من التفاصيل، يُرجى الاطّلاع على مقالة
مواد العرض في "حملات الأداء الأفضل".
إنشاء مادة عرض
يجب استخدام أسماء فريدة عند إنشاء مواد عرض الصور وحِزم الوسائط. إذا أدخلت اسمًا حاليًا، سيتم إنشاء اسم جديد من خلال إلحاق سلسلة فريدة بالاسم الحالي. نوصي بشدة باستخدام أسماء فريدة وصفية لتسهيل إدارة الأصول الفردية وتحديدها مع نمو مجموعتك.
نقطة أساسية: تتيح AssetService تنفيذ العمليتَين create وupdate للعديد من أنواع مواد العرض (مثل روابط أقسام الموقع أو وسائل الشرح أو العروض الترويجية)، في حين أنّ مواد العرض غير القابلة للتغيير، مثل TextAsset وImageAsset، لا يمكن تعديلها في مكانها بعد تحميلها إلى حساب على "إعلانات Google". يجب استخدام العمليات على مستوى الإعلان أو على مستوى الكيان لإدارة عمليات الربط بين مواد العرض الفردية والإعلانات أو الحملات.
يوضّح المثال التالي كيفية إنشاء مادة عرض صورة جديدة من عنوان URL لبيانات صورة أولية.
جافا
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
بعد إنشاء مادة العرض، تعرض واجهة برمجة التطبيقات عنصر
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مطلوبًا (وإلا ستعرض واجهة برمجة التطبيقات الخطأFieldError.REQUIRED). عند ضبط هذا الحقل علىCUSTOMER_UPLOADED، يكون الحقلpartner_promotion_idاختياريًا.
partner_promotion_id: رسالةExternalPartnerIdتحدّد العرض الترويجي في نظام نقطة البيع الخاص بالشريك. تأكَّد من تنسيق المعرّف الذي تستخدمه عملية دمج نقطة البيع، ثم اضبط أحد خياراتoneofالتالية:-
int_value(int64): معرّف عدد صحيح موجب (1أو أكبر) تؤدي القيمة0أو أقل إلى عرض الخطأRangeError.TOO_LOW. -
string_value(string): معرّف سلسلة يتألف من حرف واحد إلى 50 حرفًا قابلاً للطباعة. تزيل واجهة برمجة التطبيقات المسافات البيضاء في بداية السلسلة ونهايتها قبل التحقّق من صحتها، لذا فإنّ السلسلة الفارغة أو التي تحتوي على مسافات بيضاء فقط تعرض الخطأStringLengthError.TOO_SHORT، والقيمة التي تمت إزالة المسافات البيضاء منها والتي يزيد طولها عن 50 حرفًا تعرض الخطأStringLengthError.TOO_LONG، والقيمة التي تحتوي على أحرف غير قابلة للطباعة تعرض الخطأStringFormatError.ILLEGAL_CHARS.
إذا كان دمج العروض الترويجية في حسابك يتطلّب استخدام صيغة معيّنة من
partner_promotion_id، وتم ضبط الصيغة الأخرى (int_valueبدلاً منstring_value، أوstring_valueبدلاً منint_value)، ستعرض واجهة برمجة التطبيقات الخطأAssetError.PARTNER_PROMOTION_ID_TYPE_INCOMPATIBLE.-
يمكنك الاختيار والفلترة (WHERE) والترتيب (ORDER BY) حسب حقول أوراق الشجر الأربعة في تقارير asset. بما أنّ الحقل 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
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
اقتراحات مواد العرض
يمكن أن تساعدك الاقتراحات في تحسين مواد العرض بطريقتَين:
يمكنهم اقتراح مواد عرض لك، ويمكنك إضافتها إلى حملتك من خلال الاتصال بالرقم
RecommendationService.ApplyRecommendation. على سبيل المثال، يمكنك استرداد اقتراحاتCALLOUT_ASSETوSITELINK_ASSETوCALL_ASSETوLEAD_FORM_ASSETوRESPONSIVE_SEARCH_AD_ASSET، ثم تطبيقها لإرفاق مواد العرض المقترَحة بالحملة أو المجموعة الإعلانية أو الإعلان ذي الصلة.ويمكن أن تساعدك في تحديد المجالات التي يمكنك فيها تعديل مواد العرض لتحسين القوة الإجمالية لإعلاناتك المتجاوبة على شبكة البحث أو "حملات الأداء الأفضل". على سبيل المثال، يمكنك استرداد اقتراحات
IMPROVE_PERFORMANCE_MAX_AD_STRENGTHلمعرفة مجموعات مواد العرض التي يجب تعديلها لتحسين قوتها.
لمزيد من المعلومات، يُرجى الاطّلاع على دليل نتيجة التحسين والاقتراحات.