با داراییها و بودجه پیشنیاز، اکنون میتوان پویش را ایجاد کرد.
پویشهای «عملکرد بیشینه» AdvertisingChannelType
PERFORMANCE_MAX دارند. هیچ AdvertisingChannelSubType نباید تنظیم شود.
تنها استراتژیهای پیشنهاد قیمت پشتیبانیشده عبارتند از:
- اگر مقادیر را پیگیری نمیکنید و همه تبدیلها را مساوی درنظر میگیرید، از راهبرد پیشنهاد قیمت
MaximizeConversionsاستفاده کنید. کنشبهای هدف (اختیاری) را میتوان تنظیم کرد. بیشتر بدانید. - اگر مقادیر تبدیلهایتان را پیگیری میکنید، استراتژی پیشنهاد قیمت
MaximizeConversionValueرا تنظیم کنید. برگشتی پساز هزینه آگهی هدف (ROAS) اختیاری را میتوان تنظیم کرد. بیشتر بدانید.
راهبردهای پیشنهاد قیمت سبد سهام ایجادشده بااستفاده از BiddingStrategyService
توسط پویشهای «عملکرد بیشینه» پشتیبانی نمیشود. بهجای ایجاد چندین پویش در استراتژی پیشنهاد قیمت سبد سهام، از پویشهای کمتر و گروههای دارایی بیشتر استفاده کنید.
جاوا
/** Creates a MutateOperation that creates a new Performance Max campaign. */ private MutateOperation createPerformanceMaxCampaignOperation( long customerId, boolean brandGuidelinesEnabled) { TextGuidelines textGuidelines = TextGuidelines.newBuilder() // Specifies a list of terms that should not be used in any auto-generated // text assets. .addAllTermExclusions(ImmutableList.of("cheap", "free")) // Specifies freeform messaging restriction prompts that will apply to all // auto-generated text assets. .addMessagingRestrictions( MessagingRestriction.newBuilder() .setRestrictionText("Don't mention competitor names") .setRestrictionType( MessagingRestrictionType.RESTRICTION_BASED_EXCLUSION) .build()) .build(); Campaign performanceMaxCampaign = Campaign.newBuilder() .setName("Performance Max campaign #" + getPrintableDateTime()) // Sets the campaign status as PAUSED. The campaign is the only entity in // the mutate request that should have its status set. .setStatus(CampaignStatus.PAUSED) // All Performance Max campaigns have an advertising_channel_type of // PERFORMANCE_MAX. The advertising_channel_sub_type should not be set. .setAdvertisingChannelType(AdvertisingChannelType.PERFORMANCE_MAX) // Bidding strategy must be set directly on the campaign. // Setting a portfolio bidding strategy by resource name is not supported. // Max Conversion and Maximize Conversion Value are the only strategies // supported for Performance Max campaigns. // An optional ROAS (Return on Advertising Spend) can be set for // maximize_conversion_value. The ROAS value must be specified as a ratio in // the API. It is calculated by dividing "total value" by "total spend". // For more information on Maximize Conversion Value, see the support // article: http://support.google.com/google-ads/answer/7684216. // A targetRoas of 3.5 corresponds to a 350% return on ad spend. .setMaximizeConversionValue( MaximizeConversionValue.newBuilder().setTargetRoas(3.5).build()) // Sets if the campaign is enabled for brand guidelines. For more information on brand // guidelines, see https://support.google.com/google-ads/answer/14934472. .setBrandGuidelinesEnabled(brandGuidelinesEnabled) // Sets the text guidelines. .setTextGuidelines(textGuidelines) // Assigns the resource name with a temporary ID. .setResourceName( ResourceNames.campaign(customerId, PERFORMANCE_MAX_CAMPAIGN_TEMPORARY_ID)) // Sets the budget using the given budget resource name. .setCampaignBudget(ResourceNames.campaignBudget(customerId, BUDGET_TEMPORARY_ID)) // Declares whether this campaign serves political ads targeting the EU. .setContainsEuPoliticalAdvertising(DOES_NOT_CONTAIN_EU_POLITICAL_ADVERTISING) // Optional fields. .setStartDateTime(new DateTime().plusDays(1).toString("yyyy-MM-dd 00:00:00")) .setEndDateTime(new DateTime().plusDays(365).toString("yyyy-MM-dd 23:59:59")) // Configures the optional opt-in/out status for asset automation settings. .addAllAssetAutomationSettings(ImmutableList.of( AssetAutomationSetting.newBuilder() .setAssetAutomationType(AssetAutomationType.GENERATE_IMAGE_EXTRACTION) .setAssetAutomationStatus(AssetAutomationStatus.OPTED_IN).build(), AssetAutomationSetting.newBuilder() .setAssetAutomationType( AssetAutomationType.FINAL_URL_EXPANSION_TEXT_ASSET_AUTOMATION) .setAssetAutomationStatus(AssetAutomationStatus.OPTED_IN).build(), AssetAutomationSetting.newBuilder() .setAssetAutomationType(AssetAutomationType.TEXT_ASSET_AUTOMATION) .setAssetAutomationStatus(AssetAutomationStatus.OPTED_IN).build(), AssetAutomationSetting.newBuilder() .setAssetAutomationType(AssetAutomationType.GENERATE_ENHANCED_YOUTUBE_VIDEOS) .setAssetAutomationStatus(AssetAutomationStatus.OPTED_IN).build(), AssetAutomationSetting.newBuilder() .setAssetAutomationType(AssetAutomationType.GENERATE_IMAGE_ENHANCEMENT) .setAssetAutomationStatus(AssetAutomationStatus.OPTED_IN).build())) .build(); return MutateOperation.newBuilder() .setCampaignOperation( CampaignOperation.newBuilder().setCreate(performanceMaxCampaign).build()) .build(); }
C#
/// Creates a MutateOperation that creates a new Performance Max campaign. /// <param name="campaignResourceName">The campaign resource name.</param> /// <param name="campaignBudgetResourceName">The campaign budget resource name.</param> /// <param name="brandGuidelinesEnabled">Whether or not to enable brand guidelines.</param> /// <returns>A MutateOperations that will create this new campaign.</returns> private MutateOperation CreatePerformanceMaxCampaignOperation( string campaignResourceName, string campaignBudgetResourceName, bool brandGuidelinesEnabled) { Campaign.Types.TextGuidelines textGuidelines = new Campaign.Types.TextGuidelines(); textGuidelines.TermExclusions.AddRange(["cheap", "free"]); textGuidelines.MessagingRestrictions.Add( new Campaign.Types.MessagingRestriction() { RestrictionText = "Don't mention competitor names", RestrictionType = MessagingRestrictionType.RestrictionBasedExclusion } ); Campaign campaign = new Campaign() { Name = "Performance Max campaign #" + ExampleUtilities.GetRandomString(), // Set the campaign status as PAUSED. The campaign is the only entity in // the mutate request that should have its status set. Status = CampaignStatus.Paused, // All Performance Max campaigns have an AdvertisingChannelType of // PerformanceMax. The AdvertisingChannelSubType should not be set. AdvertisingChannelType = AdvertisingChannelType.PerformanceMax, // Bidding strategy must be set directly on the campaign. Setting a // portfolio bidding strategy by resource name is not supported. Max // Conversion and Maximize Conversion Value are the only strategies // supported for Performance Max campaigns. BiddingStrategyType is // read-only and cannot be set by the API. An optional ROAS (Return on // Advertising Spend) can be set to enable the MaximizeConversionValue // bidding strategy. The ROAS value must be specified as a ratio in the API. // It is calculated by dividing "total value" by "total spend". // // For more information on Maximize Conversion Value, see the support // article: // http://support.google.com/google-ads/answer/7684216. // // A target_roas of 3.5 corresponds to a 350% return on ad spend. MaximizeConversionValue = new MaximizeConversionValue() { TargetRoas = 3.5 }, // Use the temporary resource name created earlier ResourceName = campaignResourceName, // Set the budget using the given budget resource name. CampaignBudget = campaignBudgetResourceName, // Set if the campaign is enabled for brand guidelines. For more information // on brand guidelines, see https://support.google.com/google-ads/answer/14934472. BrandGuidelinesEnabled = brandGuidelinesEnabled, // Declare whether or not this campaign contains political ads targeting the EU. ContainsEuPoliticalAdvertising = EuPoliticalAdvertisingStatus.DoesNotContainEuPoliticalAdvertising, TextGuidelines = textGuidelines, // Optional fields StartDateTime = DateTime.Now.AddDays(1).ToString("yyyyMMdd 00:00:00"), EndDateTime = DateTime.Now.AddDays(365).ToString("yyyyMMdd 23:59:59") }; campaign.AssetAutomationSettings.AddRange(new[]{ new Campaign.Types.AssetAutomationSetting { AssetAutomationType = AssetAutomationType.GenerateImageExtraction, AssetAutomationStatus = AssetAutomationStatus.OptedIn }, new Campaign.Types.AssetAutomationSetting { AssetAutomationType = AssetAutomationType.FinalUrlExpansionTextAssetAutomation, AssetAutomationStatus = AssetAutomationStatus.OptedIn }, new Campaign.Types.AssetAutomationSetting { AssetAutomationType = AssetAutomationType.TextAssetAutomation, AssetAutomationStatus = AssetAutomationStatus.OptedIn }, new Campaign.Types.AssetAutomationSetting { AssetAutomationType = AssetAutomationType.GenerateEnhancedYoutubeVideos, AssetAutomationStatus = AssetAutomationStatus.OptedIn }, new Campaign.Types.AssetAutomationSetting { AssetAutomationType = AssetAutomationType.GenerateImageEnhancement, AssetAutomationStatus = AssetAutomationStatus.OptedIn }, }); MutateOperation operation = new MutateOperation() { CampaignOperation = new CampaignOperation() { Create = campaign } }; return operation; }
PHP
private static function createPerformanceMaxCampaignOperation( int $customerId, bool $brandGuidelinesEnabled ): MutateOperation { // Creates a mutate operation that creates a campaign operation. return new MutateOperation( [ 'campaign_operation' => new CampaignOperation( [ 'create' => new Campaign( [ 'name' => 'Performance Max campaign #' . Helper::getPrintableDatetime(), // Assigns the resource name with a temporary ID. 'resource_name' => ResourceNames::forCampaign( $customerId, self::PERFORMANCE_MAX_CAMPAIGN_TEMPORARY_ID ), // Sets the budget using the given budget resource name. 'campaign_budget' => ResourceNames::forCampaignBudget( $customerId, self::BUDGET_TEMPORARY_ID ), // The campaign is the only entity in the mutate request that should have its // status set. // Recommendation: Set the campaign to PAUSED when creating it to prevent // the ads from immediately serving. 'status' => CampaignStatus::PAUSED, // All Performance Max campaigns have an advertising_channel_type of // PERFORMANCE_MAX. The advertising_channel_sub_type should not be set. 'advertising_channel_type' => AdvertisingChannelType::PERFORMANCE_MAX, // Bidding strategy must be set directly on the campaign. // Setting a portfolio bidding strategy by resource name is not supported. // Max Conversion and Maximize Conversion Value are the only strategies // supported for Performance Max campaigns. // An optional ROAS (Return on Advertising Spend) can be set for // maximize_conversion_value. The ROAS value must be specified as a ratio in // the API. It is calculated by dividing "total value" by "total spend". // For more information on Maximize Conversion Value, see the support // article: http://support.google.com/google-ads/answer/7684216. // A target_roas of 3.5 corresponds to a 350% return on ad spend. 'maximize_conversion_value' => new MaximizeConversionValue( [ 'target_roas' => 3.5 ] ), 'asset_automation_settings' => [ new AssetAutomationSetting( [ 'asset_automation_type' => AssetAutomationType::TEXT_ASSET_AUTOMATION, 'asset_automation_status' => AssetAutomationStatus::OPTED_IN ] ), new AssetAutomationSetting( [ 'asset_automation_type' => AssetAutomationType::URL_EXPANSION, 'asset_automation_status' => AssetAutomationStatus::OPTED_IN ] ) ], // Sets if the campaign is enabled for brand guidelines. For more information // on brand guidelines, see // https://support.google.com/google-ads/answer/14934472. 'brand_guidelines_enabled' => $brandGuidelinesEnabled, // Declare whether or not this campaign serves political ads targeting the EU. 'contains_eu_political_advertising' => EuPoliticalAdvertisingStatus::DOES_NOT_CONTAIN_EU_POLITICAL_ADVERTISING, // Optional fields. 'start_date_time' => date('Y-m-d 00:00:00', strtotime('+1 day')), 'end_date_time' => date('Y-m-d 23:59:59', strtotime('+365 days')) ] ) ] ) ] ); }
Python
def create_performance_max_campaign_operation( client: GoogleAdsClient, customer_id: str, brand_guidelines_enabled: bool, ) -> MutateOperation: """Creates a MutateOperation that creates a new Performance Max campaign. A temporary ID will be assigned to this campaign so that it can be referenced by other objects being created in the same Mutate request. Args: client: an initialized GoogleAdsClient instance. customer_id: a client customer ID. brand_guidelines_enabled: a boolean value indicating if the campaign is enabled for brand guidelines. Returns: a MutateOperation that creates a campaign. """ mutate_operation: MutateOperation = client.get_type("MutateOperation") campaign: Campaign = mutate_operation.campaign_operation.create campaign.name = f"Performance Max campaign #{uuid4()}" # Set the campaign status as PAUSED. The campaign is the only entity in # the mutate request that should have its status set. campaign.status = client.enums.CampaignStatusEnum.PAUSED # All Performance Max campaigns have an advertising_channel_type of # PERFORMANCE_MAX. The advertising_channel_sub_type should not be set. campaign.advertising_channel_type = ( client.enums.AdvertisingChannelTypeEnum.PERFORMANCE_MAX ) # Bidding strategy must be set directly on the campaign. # Setting a portfolio bidding strategy by resource name is not supported. # Max Conversion and Maximize Conversion Value are the only strategies # supported for Performance Max campaigns. # An optional ROAS (Return on Advertising Spend) can be set for # maximize_conversion_value. The ROAS value must be specified as a ratio in # the API. It is calculated by dividing "total value" by "total spend". # For more information on Maximize Conversion Value, see the support # article: http://support.google.com/google-ads/answer/7684216. # A target_roas of 3.5 corresponds to a 350% return on ad spend. campaign.bidding_strategy_type = ( client.enums.BiddingStrategyTypeEnum.MAXIMIZE_CONVERSION_VALUE ) campaign.maximize_conversion_value.target_roas = 3.5 # Set if the campaign is enabled for brand guidelines. For more information # on brand guidelines, see https://support.google.com/google-ads/answer/14934472. campaign.brand_guidelines_enabled = brand_guidelines_enabled # Assign the resource name with a temporary ID. campaign_service: CampaignServiceClient = client.get_service( "CampaignService" ) campaign.resource_name = campaign_service.campaign_path( customer_id, _PERFORMANCE_MAX_CAMPAIGN_TEMPORARY_ID ) # Set the budget using the given budget resource name. campaign.campaign_budget = campaign_service.campaign_budget_path( customer_id, _BUDGET_TEMPORARY_ID ) # Declare whether or not this campaign serves political ads targeting the # EU. Valid values are: # CONTAINS_EU_POLITICAL_ADVERTISING # DOES_NOT_CONTAIN_EU_POLITICAL_ADVERTISING campaign.contains_eu_political_advertising = ( client.enums.EuPoliticalAdvertisingStatusEnum.DOES_NOT_CONTAIN_EU_POLITICAL_ADVERTISING ) # Optional fields campaign.start_date_time = (datetime.now() + timedelta(1)).strftime( "%Y%m%d 00:00:00" ) campaign.end_date_time = (datetime.now() + timedelta(365)).strftime( "%Y%m%d 23:59:59" ) campaign.text_guidelines.term_exclusions = ["cheap", "free"] messaging_restriction = campaign.MessagingRestriction() messaging_restriction.restriction_text = "Don't mention competitor names" messaging_restriction.restriction_type = ( client.enums.MessagingRestrictionTypeEnum.RESTRICTION_BASED_EXCLUSION ) campaign.text_guidelines.messaging_restrictions.append( messaging_restriction ) # Configures the optional opt-in/out status for asset automation settings. for asset_automation_type_enum in [ client.enums.AssetAutomationTypeEnum.GENERATE_IMAGE_EXTRACTION, client.enums.AssetAutomationTypeEnum.FINAL_URL_EXPANSION_TEXT_ASSET_AUTOMATION, client.enums.AssetAutomationTypeEnum.TEXT_ASSET_AUTOMATION, client.enums.AssetAutomationTypeEnum.GENERATE_ENHANCED_YOUTUBE_VIDEOS, client.enums.AssetAutomationTypeEnum.GENERATE_IMAGE_ENHANCEMENT, ]: asset_automattion_setting: Campaign.AssetAutomationSetting = ( client.get_type("Campaign").AssetAutomationSetting() ) asset_automattion_setting.asset_automation_type = ( asset_automation_type_enum ) asset_automattion_setting.asset_automation_status = ( client.enums.AssetAutomationStatusEnum.OPTED_IN ) campaign.asset_automation_settings.append(asset_automattion_setting) return mutate_operation
Ruby
# Creates a MutateOperation that creates a new Performance Max campaign. # # A temporary ID will be assigned to this campaign so that it can # be referenced by other objects being created in the same Mutate request. def create_performance_max_campaign_operation( client, customer_id, brand_guidelines_enabled) client.operation.mutate do |m| m.campaign_operation = client.operation.create_resource.campaign do |c| c.name = "Performance Max campaign #{SecureRandom.uuid}" # Set the campaign status as PAUSED. The campaign is the only entity in # the mutate request that should have its status set. c.status = :PAUSED # All Performance Max campaigns have an advertising_channel_type of # PERFORMANCE_MAX. The advertising_channel_sub_type should not be set. c.advertising_channel_type = :PERFORMANCE_MAX # Bidding strategy must be set directly on the campaign. # Setting a portfolio bidding strategy by resource name is not supported. # Max Conversion and Maximize Conversion Value are the only strategies # supported for Performance Max campaigns. # An optional ROAS (Return on Advertising Spend) can be set for # maximize_conversion_value. The ROAS value must be specified as a ratio in # the API. It is calculated by dividing "total value" by "total spend". # For more information on Maximize Conversion Value, see the support # article: http://support.google.com/google-ads/answer/7684216. # A target_roas of 3.5 corresponds to a 350% return on ad spend. c.bidding_strategy_type = :MAXIMIZE_CONVERSION_VALUE c.maximize_conversion_value = client.resource.maximize_conversion_value do |mcv| mcv.target_roas = 3.5 end # Configures the optional opt-in/out status for asset automation settings. c.asset_automation_settings << client.resource.asset_automation_setting do |aas| aas.asset_automation_type = :GENERATE_IMAGE_EXTRACTION aas.asset_automation_status = :OPTED_IN end c.asset_automation_settings << client.resource.asset_automation_setting do |aas| aas.asset_automation_type = :FINAL_URL_EXPANSION_TEXT_ASSET_AUTOMATION aas.asset_automation_status = :OPTED_IN end c.asset_automation_settings << client.resource.asset_automation_setting do |aas| aas.asset_automation_type = :TEXT_ASSET_AUTOMATION aas.asset_automation_status = :OPTED_IN end c.asset_automation_settings << client.resource.asset_automation_setting do |aas| aas.asset_automation_type = :GENERATE_ENHANCED_YOUTUBE_VIDEOS aas.asset_automation_status = :OPTED_IN end c.asset_automation_settings << client.resource.asset_automation_setting do |aas| aas.asset_automation_type = :GENERATE_IMAGE_ENHANCEMENT aas.asset_automation_status = :OPTED_IN end # Set if the campaign is enabled for brand guidelines. For more # information on brand guidelines, see # https://support.google.com/google-ads/answer/14934472. c.brand_guidelines_enabled = brand_guidelines_enabled # Assign the resource name with a temporary ID. c.resource_name = client.path.campaign(customer_id, PERFORMANCE_MAX_CAMPAIGN_TEMPORARY_ID) # Set the budget using the given budget resource name. c.campaign_budget = client.path.campaign_budget(customer_id, BUDGET_TEMPORARY_ID) # Declare whether or not this campaign serves political ads targeting the EU. # Valid values are CONTAINS_EU_POLITICAL_ADVERTISING and # DOES_NOT_CONTAIN_EU_POLITICAL_ADVERTISING. c.contains_eu_political_advertising = :DOES_NOT_CONTAIN_EU_POLITICAL_ADVERTISING # Optional fields c.start_date_time = DateTime.parse((Date.today + 1).to_s).strftime('%Y%m%d %H:%M:%S') c.end_date_time = DateTime.parse(Date.today.next_year.to_s).strftime('%Y%m%d %H:%M:%S') end end end
پرل
sub create_performance_max_campaign_operation { my ($customer_id, $brand_guidelines_enabled) = @_; # Configures the optional opt-in/out status for asset automation settings. # When we create the campaign object, we set campaign->{assetAutomationSettings} # equal to $asset_automation_settings. my $asset_automation_settings = []; my $asset_automation_types = [ GENERATE_IMAGE_EXTRACTION, FINAL_URL_EXPANSION_TEXT_ASSET_AUTOMATION, TEXT_ASSET_AUTOMATION, GENERATE_ENHANCED_YOUTUBE_VIDEOS, GENERATE_IMAGE_ENHANCEMENT ]; foreach my $asset_automation_type (@$asset_automation_types) { push @$asset_automation_settings, Google::Ads::GoogleAds::V26::Resources::AssetAutomationSetting->new({ assetAutomationStatus => OPTED_IN, assetAutomationType => $asset_automation_type }); } my $text_guidelines = Google::Ads::GoogleAds::V26::Resources::TextGuidelines->new({ termExclusions => ["cheap", "free"], messagingRestrictions => [ Google::Ads::GoogleAds::V26::Resources::MessagingRestriction->new({ restrictionText => "Don't mention competitor names", restrictionType => RESTRICTION_BASED_EXCLUSION })]}); # Create a mutate operation that creates a campaign operation. return Google::Ads::GoogleAds::V26::Services::GoogleAdsService::MutateOperation-> new({ campaignOperation => Google::Ads::GoogleAds::V26::Services::CampaignService::CampaignOperation ->new({ create => Google::Ads::GoogleAds::V26::Resources::Campaign->new({ # Assign the resource name with a temporary ID. resourceName => Google::Ads::GoogleAds::V26::Utils::ResourceNames::campaign( $customer_id, PERFORMANCE_MAX_CAMPAIGN_TEMPORARY_ID ), name => "Performance Max campaign #" . uniqid(), # Set the budget using the given budget resource name. campaignBudget => Google::Ads::GoogleAds::V26::Utils::ResourceNames::campaign_budget( $customer_id, BUDGET_TEMPORARY_ID ), # Set the campaign status as PAUSED. The campaign is the only entity in # the mutate request that should have its status set. status => Google::Ads::GoogleAds::V26::Enums::CampaignStatusEnum::PAUSED, # All Performance Max campaigns have an advertisingChannelType of # PERFORMANCE_MAX. The advertisingChannelSubType should not be set. advertisingChannelType => PERFORMANCE_MAX, # Bidding strategy must be set directly on the campaign. # Setting a portfolio bidding strategy by resource name is not supported. # Max Conversion and Maximize Conversion Value are the only strategies # supported for Performance Max campaigns. # An optional ROAS (Return on Advertising Spend) can be set for # maximizeConversionValue. The ROAS value must be specified as a ratio in # the API. It is calculated by dividing "total value" by "total spend". # For more information on Maximize Conversion Value, see the support # article: http://support.google.com/google-ads/answer/7684216. # A targetRoas of 3.5 corresponds to a 350% return on ad spend. maximizeConversionValue => Google::Ads::GoogleAds::V26::Common::MaximizeConversionValue-> new({ targetRoas => 3.5 } ), # Set if the campaign is enabled for brand guidelines. For more information # on brand guidelines, see https://support.google.com/google-ads/answer/14934472. brandGuidelinesEnabled => $brand_guidelines_enabled, # Configures the optional opt-in/out status for asset automation settings. assetAutomationSettings => $asset_automation_settings, # Set the text guidelines. textGuidelines => $text_guidelines, # Optional fields. startDateTime => strftime("%Y%m%d 00:00:00", localtime(time + 60 * 60 * 24)), endDateTime => strftime( "%Y%m%d 23:59:59", localtime(time + 60 * 60 * 24 * 365) ), # Declare whether or not this campaign serves political ads targeting the EU. # Valid values are CONTAINS_EU_POLITICAL_ADVERTISING and # DOES_NOT_CONTAIN_EU_POLITICAL_ADVERTISING. containsEuPoliticalAdvertising => DOES_NOT_CONTAIN_EU_POLITICAL_ADVERTISING })})}); }
curl
توصیههای پیشنهاد قیمت دادن
Google Ads API دو نوع توصیه ارائه میدهد تا به شما کمک کند قیمت پیشنهادی پویش «عملکرد بیشینه» خود را بهینهسازی کنید:
MAXIMIZE_CONVERSION_VALUE_OPT_INتوصیه میکند از استراتژی پیشنهاد قیمت بیشینهسازی مقدار تبدیل برای پویشهایتان استفاده کنید.MAXIMIZE_CONVERSIONS_OPT_INتوصیه میکند از استراتژی پیشنهاد قیمت بیشینهسازی تبدیلها برای پویشهایتان استفاده کنید و مبلغ بودجه پیشنهادی ارائه میدهد.
برای اطلاعات بیشتر درباره استفاده از توصیهها، به راهنمای امتیاز بهینهسازی و توصیهها مراجعه کنید.
دستورالعملهای نمانام
دستورالعملهای نمانام نحوه نمایش نمانام شما در داراییها یا قالبهای خودکارسازیشده پویش «عملکرد بیشینه» را کنترل میکند. پویشهای «عملکرد بیشینه»
دستورالعملهای نمانام را بهطور خودکار در همه «عملکرد بیشینه» جدید برای
فروشهای آنلاین یا تولید فهرست مشتریان بالقوه (استاندارد) و «عملکرد بیشینه» برای فروشهای آنلاین با
فید محصول (خردهفروشی) پویشها فعال میکنند. اگر نمیخواهید رهنمودهای نمانام را در کمپینهای جدیدتان فعال کنید،
هنگام ایجاد کمپین «عملکرد بیشینه» جدید، Campaign.brand_guidelines_enabled را روی false تنظیم کنید.
پویشهای «عملکرد بیشینه» با دستورالعملهای نمانام فعال از داراییهای سطح پویش برای انواع فیلد دارایی نمانام (BUSINESS_NAME، LOGO، و LANDSCAPE_LOGO) استفاده میکنند. باید داراییهای نمانام را بااستفاده از CampaignAsset به پویش پیوند دهید و پویش باید این موارد را داشته باشد:
- دقیقاً یک دارایی
BUSINESS_NAME - حداقل یک دارایی
LOGOو حداکثر چهار دارایی اختیاری نشانواره اضافی از نوعLOGOیاLANDSCAPE_LOGO
رهنمودهای اختیاری رنگ و قلم برای پویش را میتوان بااستفاده از فیلد
Campaign.brand_guidelines تنظیم کرد:
main_colorرنگ اصلی را تنظیم میکند. رنگ باید بهصورت رشته کد هگزادسیمال ارائه شود، مانند #00ff00.accent_colorرنگ ثانویه را تنظیم میکند. رنگ باید بهصورت رشته کد هگزادسیمال ارائه شود، مثل #00ff00.- از
predefined_font_familyبرای تنظیم قلم استفاده کنید. مقدار باید یکی از «قلمهای Google» زیر باشد (حروف بزرگ و کوچک حساس است): Open Sans، Roboto، Montserrat، Poppins، Lato، Oswald، Playfair Display، Roboto Slab.
مثال زیر نشان میدهد که چگونه داراییهای BUSINESS_NAME و LOGO را ایجاد کنید
و آنها را به پویش پیوست کنید اگر دستورالعملهای نمانام فعال باشد یا به
AssetGroup اگر دستورالعملهای نمانام غیرفعال باشد. برای اطلاعات بیشتر درباره گروههای دارایی، به راهنمای راهاندازی گروه دارایی مراجعه کنید.
جاوا
/** Creates a list of MutateOperations that create linked brand assets. */ List<MutateOperation> createAndLinkBrandAssets( long customerId, boolean brandGuidelinesEnabled, String businessName, String logoUrl, String logoName) throws IOException { List<MutateOperation> mutateOperations = new ArrayList<>(); // Creates the brand name text asset. String businessNameAssetResourceName = ResourceNames.asset(customerId, getNextTemporaryId()); Asset businessNameAsset = Asset.newBuilder() .setResourceName(businessNameAssetResourceName) .setTextAsset(TextAsset.newBuilder().setText(businessName).build()) .build(); AssetOperation businessNameAssetOperation = AssetOperation.newBuilder().setCreate(businessNameAsset).build(); mutateOperations.add( MutateOperation.newBuilder().setAssetOperation(businessNameAssetOperation).build()); // Creates the logo image asset. String logoAssetResourceName = ResourceNames.asset(customerId, getNextTemporaryId()); // Creates a media file. byte[] logoBytes = ByteStreams.toByteArray(new URL(logoUrl).openStream()); Asset logoAsset = Asset.newBuilder() .setResourceName(logoAssetResourceName) .setImageAsset(ImageAsset.newBuilder().setData(ByteString.copyFrom(logoBytes)).build()) // Provides 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(logoName) .build(); AssetOperation logoImageAssetOperation = AssetOperation.newBuilder().setCreate(logoAsset).build(); mutateOperations.add( MutateOperation.newBuilder().setAssetOperation(logoImageAssetOperation).build()); if (brandGuidelinesEnabled) { // Creates CampaignAsset resources to link the Asset resources to the Campaign. mutateOperations.add( createCampaignAssetMutateOperation( customerId, AssetFieldType.BUSINESS_NAME, businessNameAssetResourceName)); mutateOperations.add( createCampaignAssetMutateOperation( customerId, AssetFieldType.LOGO, logoAssetResourceName)); } else { // Creates an AssetGroupAsset to link the Asset to the AssetGroup. mutateOperations.add( createAssetGroupAssetMutateOperation( AssetFieldType.BUSINESS_NAME, businessNameAssetResourceName, ResourceNames.assetGroup(customerId, ASSET_GROUP_TEMPORARY_ID))); mutateOperations.add( createAssetGroupAssetMutateOperation( AssetFieldType.LOGO, logoAssetResourceName, ResourceNames.assetGroup(customerId, ASSET_GROUP_TEMPORARY_ID))); } return mutateOperations; } /** Creates a MutateOperation to add an AssetGroupAsset. */ MutateOperation createAssetGroupAssetMutateOperation( AssetFieldType fieldType, String assetResourceName, String assetGroupResourceName) { AssetGroupAsset assetGroupAsset = AssetGroupAsset.newBuilder() .setFieldType(fieldType) .setAssetGroup(assetGroupResourceName) .setAsset(assetResourceName) .build(); AssetGroupAssetOperation assetGroupAssetOperation = AssetGroupAssetOperation.newBuilder().setCreate(assetGroupAsset).build(); return MutateOperation.newBuilder() .setAssetGroupAssetOperation(assetGroupAssetOperation) .build(); } /** Creates a MutateOperation to add a CampaignAsset. */ MutateOperation createCampaignAssetMutateOperation( long customerId, AssetFieldType fieldType, String assetResourceName) { CampaignAsset campaignAsset = CampaignAsset.newBuilder() .setFieldType(fieldType) .setCampaign(ResourceNames.campaign(customerId, PERFORMANCE_MAX_CAMPAIGN_TEMPORARY_ID)) .setAsset(assetResourceName) .build(); CampaignAssetOperation campaignAssetOperation = CampaignAssetOperation.newBuilder().setCreate(campaignAsset).build(); return MutateOperation.newBuilder().setCampaignAssetOperation(campaignAssetOperation).build(); }
C#
private List<MutateOperation> CreateAndLinkBrandAssets( string assetGroupResourceName, string campaignResourceName, AssetTemporaryResourceNameGenerator assetResourceNameGenerator, string businessName, string logoUrl, string logoName, GoogleAdsConfig config, bool brandGuidelinesEnabled) { List<MutateOperation> operations = new List<MutateOperation>(); string logoAssetResourceName = assetResourceNameGenerator.Next(); string businessNameAssetResourceName = assetResourceNameGenerator.Next(); // Create the Image Asset. operations.Add( new MutateOperation() { AssetOperation = new AssetOperation() { Create = new Asset() { ResourceName = logoAssetResourceName, ImageAsset = new ImageAsset() { Data = ByteString.CopyFrom( MediaUtilities.GetAssetDataFromUrl(logoUrl, config) ) }, // 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 = logoName } } } ); // Create the business name asset. operations.Add( new MutateOperation() { AssetOperation = new AssetOperation() { Create = new Asset() { ResourceName = businessNameAssetResourceName, TextAsset = new TextAsset() { Text = businessName, } } } } ); if (brandGuidelinesEnabled) { // Create CampaignAssets to link the Assets to the Campaign. operations.Add( new MutateOperation() { CampaignAssetOperation = new CampaignAssetOperation() { Create = new CampaignAsset() { FieldType = AssetFieldType.Logo, Campaign = campaignResourceName, Asset = logoAssetResourceName } } } ); operations.Add( new MutateOperation() { CampaignAssetOperation = new CampaignAssetOperation() { Create = new CampaignAsset() { FieldType = AssetFieldType.BusinessName, Campaign = campaignResourceName, Asset = businessNameAssetResourceName } } } ); } else { // Create AssetGroupAssets to link the Assets to the AssetGroup. operations.Add( new MutateOperation() { AssetGroupAssetOperation = new AssetGroupAssetOperation() { Create = new AssetGroupAsset() { FieldType = AssetFieldType.Logo, AssetGroup = assetGroupResourceName, Asset = logoAssetResourceName } } } ); operations.Add( new MutateOperation() { AssetGroupAssetOperation = new AssetGroupAssetOperation() { Create = new AssetGroupAsset() { FieldType = AssetFieldType.BusinessName, AssetGroup = assetGroupResourceName, Asset = businessNameAssetResourceName } } } ); } return operations; }
PHP
This example is not yet available in PHP; you can take a look at the other languages.
Python
def create_and_link_brand_assets( client: GoogleAdsClient, customer_id: str, brand_guidelines_enabled: bool, business_name: str, logo_url: str, logo_name: str, ) -> List[MutateOperation]: """Creates a list of MutateOperations that create linked brand assets. Args: client: an initialized GoogleAdsClient instance. customer_id: a client customer ID. brand_guidelines_enabled: a boolean value indicating if the campaign is enabled for brand guidelines. business_name: the business name text to be put into an asset. logo_url: the url of the logo to be retrieved and put into an asset. logo_name: the asset name of the logo. Returns: MutateOperations that create linked brand assets. """ global next_temp_id operations: List[MutateOperation] = [] asset_service: AssetServiceClient = client.get_service("AssetService") # Create the Text Asset. text_asset_temp_id = next_temp_id next_temp_id -= 1 text_mutate_operation = client.get_type("MutateOperation") text_asset: Asset = text_mutate_operation.asset_operation.create text_asset.resource_name = asset_service.asset_path( customer_id, text_asset_temp_id ) text_asset.text_asset.text = business_name operations.append(text_mutate_operation) # Create the Image Asset. image_asset_temp_id = next_temp_id next_temp_id -= 1 image_mutate_operation = client.get_type("MutateOperation") image_asset: Asset = image_mutate_operation.asset_operation.create image_asset.resource_name = asset_service.asset_path( customer_id, image_asset_temp_id ) # 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. image_asset.name = logo_name image_asset.type_ = client.enums.AssetTypeEnum.IMAGE image_asset.image_asset.data = get_image_bytes_from_url(logo_url) operations.append(image_mutate_operation) if brand_guidelines_enabled: # Create CampaignAsset resources to link the Asset resources to the Campaign. campaign_service: CampaignServiceClient = client.get_service( "CampaignService" ) business_name_mutate_operation: MutateOperation = client.get_type( "MutateOperation" ) business_name_campaign_asset: CampaignAsset = ( business_name_mutate_operation.campaign_asset_operation.create ) business_name_campaign_asset.field_type = ( client.enums.AssetFieldTypeEnum.BUSINESS_NAME ) business_name_campaign_asset.campaign = campaign_service.campaign_path( customer_id, _PERFORMANCE_MAX_CAMPAIGN_TEMPORARY_ID ) business_name_campaign_asset.asset = asset_service.asset_path( customer_id, text_asset_temp_id ) operations.append(business_name_mutate_operation) logo_mutate_operation: MutateOperation = client.get_type( "MutateOperation" ) logo_campaign_asset: CampaignAsset = ( logo_mutate_operation.campaign_asset_operation.create ) logo_campaign_asset.field_type = client.enums.AssetFieldTypeEnum.LOGO logo_campaign_asset.campaign = campaign_service.campaign_path( customer_id, _PERFORMANCE_MAX_CAMPAIGN_TEMPORARY_ID ) logo_campaign_asset.asset = asset_service.asset_path( customer_id, image_asset_temp_id ) operations.append(logo_mutate_operation) else: # Create AssetGroupAsset resources to link the Asset resources to the AssetGroup. asset_group_service: AssetGroupServiceClient = client.get_service( "AssetGroupService" ) business_name_mutate_operation: MutateOperation = client.get_type( "MutateOperation" ) business_name_asset_group_asset: AssetGroupAsset = ( business_name_mutate_operation.asset_group_asset_operation.create ) business_name_asset_group_asset.field_type = ( client.enums.AssetFieldTypeEnum.BUSINESS_NAME ) business_name_asset_group_asset.asset_group = ( asset_group_service.asset_group_path( customer_id, _ASSET_GROUP_TEMPORARY_ID, ) ) business_name_asset_group_asset.asset = asset_service.asset_path( customer_id, text_asset_temp_id ) operations.append(business_name_mutate_operation) logo_mutate_operation: MutateOperation = client.get_type( "MutateOperation" ) logo_asset_group_asset: AssetGroupAsset = ( logo_mutate_operation.asset_group_asset_operation.create ) logo_asset_group_asset.field_type = client.enums.AssetFieldTypeEnum.LOGO logo_asset_group_asset.asset_group = ( asset_group_service.asset_group_path( customer_id, _ASSET_GROUP_TEMPORARY_ID, ) ) logo_asset_group_asset.asset = asset_service.asset_path( customer_id, image_asset_temp_id ) operations.append(logo_mutate_operation) return operations
Ruby
# Creates a list of MutateOperations that create linked brand assets. def create_and_link_brand_assets( client, customer_id, brand_guidelines_enabled, business_name, logo_url, logo_name) operations = [] # Create the Text Asset. text_asset_temp_id = next_temp_id operations << client.operation.mutate do |m| m.asset_operation = client.operation.create_resource.asset do |a| a.resource_name = client.path.asset(customer_id, text_asset_temp_id) a.text_asset = client.resource.text_asset do |text_asset| text_asset.text = business_name end end end # Create the Image Asset. image_asset_temp_id = next_temp_id operations << client.operation.mutate do |m| m.asset_operation = client.operation.create_resource.asset do |a| a.resource_name = client.path.asset(customer_id, image_asset_temp_id) # 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. a.name = logo_name a.type = :IMAGE a.image_asset = client.resource.image_asset do |image_asset| image_asset.data = get_image_bytes(logo_url) end end end if brand_guidelines_enabled # Create CampaignAsset resources to link the Asset resources to the Campaign. operations << client.operation.mutate do |m| m.campaign_asset_operation = client.operation.create_resource. campaign_asset do |ca| ca.field_type = :BUSINESS_NAME ca.campaign = client.path.campaign( customer_id, PERFORMANCE_MAX_CAMPAIGN_TEMPORARY_ID, ) ca.asset = client.path.asset(customer_id, text_asset_temp_id) end end operations << client.operation.mutate do |m| m.campaign_asset_operation = client.operation.create_resource. campaign_asset do |ca| ca.field_type = :LOGO ca.campaign = client.path.campaign( customer_id, PERFORMANCE_MAX_CAMPAIGN_TEMPORARY_ID, ) ca.asset = client.path.asset(customer_id, image_asset_temp_id) end end else # Create AssetGroupAsset resources to link the Asset resources to the AssetGroup. operations << client.operation.mutate do |m| m.asset_group_asset_operation = client.operation.create_resource. asset_group_asset do |aga| aga.field_type = :BUSINESS_NAME aga.asset_group = client.path.asset_group( customer_id, ASSET_GROUP_TEMPORARY_ID, ) aga.asset = client.path.asset(customer_id, text_asset_temp_id) end end operations << client.operation.mutate do |m| m.asset_group_asset_operation = client.operation.create_resource. asset_group_asset do |aga| aga.field_type = :LOGO aga.asset_group = client.path.asset_group( customer_id, ASSET_GROUP_TEMPORARY_ID, ) aga.asset = client.path.asset(customer_id, image_asset_temp_id) end end end operations end
پرل
# Creates a list of MutateOperations that create linked brand assets. sub create_and_link_brand_assets { my ($customer_id, $brand_guidelines_enabled, $business_name, $logo_url, $logo_name) = @_; my $operations = []; # Create the text asset. my $text_asset_temp_id = $next_temp_id--; push @$operations, Google::Ads::GoogleAds::V26::Services::GoogleAdsService::MutateOperation-> new({ assetOperation => Google::Ads::GoogleAds::V26::Services::AssetService::AssetOperation-> new({ create => Google::Ads::GoogleAds::V26::Resources::Asset->new({ resourceName => Google::Ads::GoogleAds::V26::Utils::ResourceNames::asset( $customer_id, $text_asset_temp_id ), textAsset => Google::Ads::GoogleAds::V26::Common::TextAsset->new({ text => $business_name })})})}); # Create the image asset. my $image_asset_temp_id = $next_temp_id--; push @$operations, Google::Ads::GoogleAds::V26::Services::GoogleAdsService::MutateOperation-> new({ assetOperation => Google::Ads::GoogleAds::V26::Services::AssetService::AssetOperation-> new({ create => Google::Ads::GoogleAds::V26::Resources::Asset->new({ resourceName => Google::Ads::GoogleAds::V26::Utils::ResourceNames::asset( $customer_id, $image_asset_temp_id ), # 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 => $logo_name, imageAsset => Google::Ads::GoogleAds::V26::Common::ImageAsset->new({ data => get_base64_data_from_url($logo_url)})})})}); if ($brand_guidelines_enabled) { # Create CampaignAsset resources to link the Asset resources to the Campaign. push @$operations, Google::Ads::GoogleAds::V26::Services::GoogleAdsService::MutateOperation ->new({ campaignAssetOperation => Google::Ads::GoogleAds::V26::Services::CampaignAssetService::CampaignAssetOperation ->new({ create => Google::Ads::GoogleAds::V26::Resources::CampaignAsset->new({ fieldType => BUSINESS_NAME, campaign => Google::Ads::GoogleAds::V26::Utils::ResourceNames::campaign( $customer_id, PERFORMANCE_MAX_CAMPAIGN_TEMPORARY_ID ), asset => Google::Ads::GoogleAds::V26::Utils::ResourceNames::asset( $customer_id, $text_asset_temp_id )})})}); push @$operations, Google::Ads::GoogleAds::V26::Services::GoogleAdsService::MutateOperation ->new({ campaignAssetOperation => Google::Ads::GoogleAds::V26::Services::CampaignAssetService::CampaignAssetOperation ->new({ create => Google::Ads::GoogleAds::V26::Resources::CampaignAsset->new({ fieldType => LOGO, campaign => Google::Ads::GoogleAds::V26::Utils::ResourceNames::campaign( $customer_id, PERFORMANCE_MAX_CAMPAIGN_TEMPORARY_ID ), asset => Google::Ads::GoogleAds::V26::Utils::ResourceNames::asset( $customer_id, $image_asset_temp_id )})})}); } else { # Create AssetGroupAsset resources to link the Asset resources to the AssetGroup. push @$operations, Google::Ads::GoogleAds::V26::Services::GoogleAdsService::MutateOperation ->new({ assetGroupAssetOperation => Google::Ads::GoogleAds::V26::Services::AssetGroupAssetService::AssetGroupAssetOperation ->new({ create => Google::Ads::GoogleAds::V26::Resources::AssetGroupAsset->new({ asset => Google::Ads::GoogleAds::V26::Utils::ResourceNames::asset( $customer_id, $text_asset_temp_id ), assetGroup => Google::Ads::GoogleAds::V26::Utils::ResourceNames::asset_group( $customer_id, ASSET_GROUP_TEMPORARY_ID ), fieldType => BUSINESS_NAME })})}); push @$operations, Google::Ads::GoogleAds::V26::Services::GoogleAdsService::MutateOperation ->new({ assetGroupAssetOperation => Google::Ads::GoogleAds::V26::Services::AssetGroupAssetService::AssetGroupAssetOperation ->new({ create => Google::Ads::GoogleAds::V26::Resources::AssetGroupAsset->new({ asset => Google::Ads::GoogleAds::V26::Utils::ResourceNames::asset( $customer_id, $image_asset_temp_id ), assetGroup => Google::Ads::GoogleAds::V26::Utils::ResourceNames::asset_group( $customer_id, ASSET_GROUP_TEMPORARY_ID ), fieldType => LOGO })})}); } return $operations; }
curl
انتقال خودکار
از ۱ ژوئن ۲۰۲۵، شروع به فعال کردن خودکار دستورالعملهای
نمانام برای پویشهای «عملکرد بیشینه» که از داراییهای نمانام یکسان
(BUSINESS_NAME، LOGO، و LANDSCAPE_LOGO) در همه گروههای دارایی استفاده میکنند خواهیم کرد. همه
پویشهایی که میتوانند بهطور خودکار انتقال داده شوند تا ۳۰ اکتبر
۲۰۲۵ انتقال داده خواهند شد.
- انتقال خودکار فقط برای پویشهایی انجام میشود که از نام و نشانواره کسبوکار یکسانی در همه گروههای دارایی استفاده میکنند. اگر پویش شما در این داراییها تنوع داشته باشد، بهطور خودکار منتقل نخواهد شد.
- همه پویشهای «عملکرد بیشینه» واجدشرایط تحت شناسه مشتری بهطور همزمان انتقال داده خواهند شد.
- پساز انتقال، هر پویش انتقالیافته مجموعه داراییهای نمانام خود را خواهد داشت که در سطح پویش بااستفاده از
CampaignAssetذخیره شده است.
با بررسی فیلد Campaign.brand_guidelines_enabled پویش میتوانید متوجه شوید که آیا پویش منتقل شده است یا نه.
فرایند انتقال خودکار ممکن است دستورالعملهای نمانام را در پویش فعال کند، حتی اگر brand_guidelines_enabled در ابتدا روی false تنظیم شده باشد.
انصراف دادن از انتقال خودکار
اگر میخواهید مطمئن شوید که رهنمودهای نمانام برای حسابهای Google Ads خاصی غیرفعال میماند و از فعال شدن آن توسط انتقال خودکار جلوگیری کنید، میتوانید درخواست کنید که حساب به فهرست غیرمجازها اضافه شود. این فهرست از گنجانده شدن پویشهای درون حساب در فرایند انتقال آفلاین که رهنمودهای نمانام را فعال میکند جلوگیری میکند.
برای درخواست افزودن به این فهرست غیرمجازها، با پشتیبانی Google Ads تماس بگیرید یا با نماینده حساب Google خود تماس بگیرید.
انتقال دستی
پویشهایی که واجدشرایط انتقال خودکار نیستند برای فعال کردن رهنمودهای نمانام به انتقال دستی نیاز دارند.
Campaign.brand_guidelines_enabled نشان میدهد که آیا پویش موجودی برای رهنمودهای نمانام فعال است یا نه. برای فعال کردن دستی رهنمودهای نمانام برای پویشی
موجود، بهجای بهروزرسانی مستقیم فیلد brand_guidelines_enabled، از CampaignService.EnablePMaxBrandGuidelines
استفاده کنید، زیرا این فیلد
تغییرناپذیر است. auto_populate_brand_assets را روی true تنظیم کنید تا پویش بهطور خودکار با داراییهای نمانام با عملکرد برتر پر شود. درغیراینصورت، باید داراییها را بهصورت دستی در عملیات با brand_assets ارائه دهید.
غیرفعال کردن رهنمودهای نمانام برای پویش پشتیبانی نمیشود.