ایجاد و استفاده از دارایی

اکثر انواع دارایی‌ها باید بااستفاده از AssetService ایجاد شوند تا بتوان از آن‌ها در آگهی استفاده کرد. نوع TextAsset استثنا است زیرا درطول ایجاد آگهی به‌صورت درون‌خطی ایجاد می‌شود. همه انواع دیگر باید ابتدا در حساب Google Ads بارگذاری شوند تا بتوان از آن‌ها استفاده کرد.

سطوح ارتباط دارایی

دارایی‌ها با پیوند دادن آن‌ها به نهادهای مختلف در سلسله‌مراتب حساب Google Ads شما برای ارائه دردسترس قرار می‌گیرند. سطح ارتباط به نوع دارایی و نوع پویش بستگی دارد. منابع رایج برای مدیریت این پیوندها عبارت‌اند از:

سرویس و منبع خاصی که باید استفاده شود به آنچه می‌خواهید به‌دست آورید بستگی دارد.

دارایی‌های نمانام «عملکرد بیشینه»

درحالی‌که بسیاری از دارایی‌ها در پویش‌های «بیشینه‌سازی عملکرد» بااستفاده از 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
TextAsset
ImageAsset
YoutubeVideoAsset
MediaBundleAsset
AppEngagementAd TextAsset
ImageAsset
YoutubeVideoAsset
Demand Gen TextAsset
ImageAsset
YoutubeVideoAsset
DemandGenCarouselCardAsset
DisplayUploadAd MediaBundleAsset
پویش «عملکرد بیشینه» TextAsset
ImageAsset
MediaBundleAsset
YoutubeVideoAsset
CallToActionAsset
ResponsiveDisplayAd TextAsset
ImageAsset
YoutubeVideoAsset
ResponsiveSearchAd TextAsset (برای عنوان‌ها، شرح‌ها در طرح‌آگهی)

انواع دارایی زیر را می‌توان در سطح مشتری، پویش، یا گروه آگهی به‌ترتیب بااستفاده از CustomerAsset، CampaignAsset، یا AdGroupAsset پیوند داد تا به‌عنوان افزونه با آگهی ارائه شوند:
  • SitelinkAsset
  • CalloutAsset
  • StructuredSnippetAsset
  • CallAsset
  • LeadFormAsset
  • PriceAsset
  • PromotionAsset
  • MobileAppAsset
  • ImageAsset (برای افزونه‌های تصویر)
  • HotelCalloutAsset
  • BusinessMessageAsset

توجه: دارایی‌های مکان و دارایی‌های مکان‌های فروش‌یاری به‌طور متفاوتی مدیریت می‌شوند، اغلب ازطریق 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

توصیه‌های دارایی

توصیه‌ها می‌توانند دارایی‌هایتان را به چند روش بهبود دهند:

  1. آن‌ها می‌توانند دارایی‌هایی را به شما پیشنهاد دهند که می‌توانید با تماس با RecommendationService.ApplyRecommendation آن‌ها را به پویش خود اضافه کنید. برای مثال، می‌توانید توصیه‌های CALLOUT_ASSET،‏ SITELINK_ASSET، CALL_ASSET،‏ LEAD_FORM_ASSET، و RESPONSIVE_SEARCH_AD_ASSET را بازیابی کنید و سپس آن‌ها را اعمال کنید تا دارایی‌های توصیه‌شده را به پویش، گروه آگهی، یا آگهی مربوطه پیوست کنید.

  2. این موارد می‌توانند به شما کمک کنند تا حوزه‌هایی را که می‌توانید دارایی‌هایتان را در آن‌ها به‌روز کنید شناسایی کنید تا قدرت کلی آگهی‌های جستجوی واکنش‌گرا یا پویش‌های «عملکرد بیشینه» خود را بهبود بخشید. برای مثال، می‌توانید IMPROVE_PERFORMANCE_MAX_AD_STRENGTH توصیه را بازیابی کنید تا ببینید کدام گروه‌های دارایی باید به‌روزرسانی شوند تا قدرتشان بهبود یابد.

برای اطلاعات بیشتر، به راهنمای امتیاز بهینه‌سازی و توصیه‌ها مراجعه کنید.