Pastikan persyaratan minimum terpenuhi: Aset kampanye Peningkat Permintaan harus memenuhi standar kualitas yang tinggi, karena aset tersebut akan ditayangkan di platform visual yang berfokus pada hiburan seperti Discover dan YouTube.
Untuk membuat kampanye Peningkat Permintaan:
- Buat anggaran.
- Buat kampanye Peningkat Permintaan dengan strategi bidding yang sesuai.
- Buat grup iklan tanpa jenis.
- Buat audiens.
- Buat aset dan iklan Peningkat Permintaan.
Sebaiknya buat semua entity yang diperlukan dalam satu permintaan API, menggunakan metode GoogleAdsService.Mutate:
Java
This example is not yet available in Java; you can take a look at the other languages.
C#
// The below methods create and return MutateOperations that we later provide to // the GoogleAdsService.Mutate method in order to create the entities in a single // request. Since the entities for a Demand Gen campaign are closely tied to one-another // it's considered a best practice to create them in a single Mutate request; the // entities will either all complete successfully or fail entirely, leaving no // orphaned entities. See: // https://developers.google.com/google-ads/api/docs/mutating/overview MutateOperation campaignBudgetOperation = CreateCampaignBudgetOperation(budgetResourceName); MutateOperation campaignOperation = CreateDemandGenCampaignOperation(campaignResourceName, budgetResourceName); MutateOperation adGroupOperation = CreateAdGroupOperation(adGroupResourceName, campaignResourceName); // Send the operations in a single mutate request. MutateGoogleAdsRequest mutateGoogleAdsRequest = new MutateGoogleAdsRequest { CustomerId = customerId.ToString() }; // It's important to create these entities in this order because they depend on // each other, for example the ad group depends on the // campaign, and the ad group ad depends on the ad group. mutateGoogleAdsRequest.MutateOperations.Add(campaignBudgetOperation); mutateGoogleAdsRequest.MutateOperations.Add(campaignOperation); mutateGoogleAdsRequest.MutateOperations.Add(adGroupOperation); mutateGoogleAdsRequest.MutateOperations.AddRange( CreateAssetOperations( videoAssetResourceName, videoId, logoResourceName, client.Config ) ); mutateGoogleAdsRequest.MutateOperations.Add( CreateDemandGenAdOperation( adGroupResourceName, videoAssetResourceName, logoResourceName ) ); MutateGoogleAdsResponse response = googleAdsServiceClient.Mutate(mutateGoogleAdsRequest);
PHP
This example is not yet available in PHP; you can take a look at the other languages.
Python
# The below methods create and return MutateOperations that we later provide # to the GoogleAdsService.Mutate method in order to create the entities in a # single request. Since the entities for a Demand Gen campaign are closely # tied to one-another it's considered a best practice to create them in a # single Mutate request; the entities will either all complete successfully # or fail entirely, leaving no orphaned entities. See: # https://developers.google.com/google-ads/api/docs/mutating/overview mutate_operations: List[MutateOperation] = [ # It's important to create these entities in this order because they # depend on each other, for example the ad group depends on the # campaign, and the ad group ad depends on the ad group. create_campaign_budget_operation(client, budget_resource_name), create_demand_gen_campaign_operation( client, campaign_resource_name, budget_resource_name ), create_ad_group_operation( client, ad_group_resource_name, campaign_resource_name ), *create_asset_operations( # Use iterable unpacking client, video_asset_resource_name, video_id, logo_asset_resource_name, ), create_demand_gen_ad_operation( client, ad_group_resource_name, video_asset_resource_name, logo_asset_resource_name, ), ] # Send the operations in a single mutate request. googleads_service.mutate( customer_id=customer_id, mutate_operations=mutate_operations )
Ruby
This example is not yet available in Ruby; you can take a look at the other languages.
Perl
This example is not yet available in Perl; you can take a look at the other languages.
Buat anggaran
Buat anggaran. Perhatikan bahwa kampanye Peningkat Permintaan tidak dapat menggunakan anggaran bersama. Sebaiknya Anda memiliki anggaran harian yang memadai untuk setidaknya 15 kali bid target CPA yang diharapkan. Pelajari lebih lanjut.
Java
private static String addCampaignBudget(GoogleAdsClient googleAdsClient, long customerId) { CampaignBudget budget = CampaignBudget.newBuilder() .setName("Interplanetary Cruise Budget #" + getPrintableDateTime()) .setDeliveryMethod(BudgetDeliveryMethod.STANDARD) .setAmountMicros(500_000) .build(); CampaignBudgetOperation op = CampaignBudgetOperation.newBuilder().setCreate(budget).build(); try (CampaignBudgetServiceClient campaignBudgetServiceClient = googleAdsClient.getLatestVersion().createCampaignBudgetServiceClient()) { MutateCampaignBudgetsResponse response = campaignBudgetServiceClient.mutateCampaignBudgets( Long.toString(customerId), ImmutableList.of(op)); String budgetResourceName = response.getResults(0).getResourceName(); System.out.printf("Added budget: %s%n", budgetResourceName); return budgetResourceName; } }
C#
private static string CreateBudget(GoogleAdsClient client, long customerId) { // Get the BudgetService. CampaignBudgetServiceClient budgetService = client.GetService( Services.V21.CampaignBudgetService); // Create the campaign budget. CampaignBudget budget = new CampaignBudget() { Name = "Interplanetary Cruise Budget #" + ExampleUtilities.GetRandomString(), DeliveryMethod = BudgetDeliveryMethod.Standard, AmountMicros = 500000 }; // Create the operation. CampaignBudgetOperation budgetOperation = new CampaignBudgetOperation() { Create = budget }; // Create the campaign budget. MutateCampaignBudgetsResponse response = budgetService.MutateCampaignBudgets( customerId.ToString(), new CampaignBudgetOperation[] { budgetOperation }); return response.Results[0].ResourceName; }
PHP
private static function addCampaignBudget(GoogleAdsClient $googleAdsClient, int $customerId) { // Creates a campaign budget. $budget = new CampaignBudget([ 'name' => 'Interplanetary Cruise Budget #' . Helper::getPrintableDatetime(), 'delivery_method' => BudgetDeliveryMethod::STANDARD, 'amount_micros' => 500000 ]); // Creates a campaign budget operation. $campaignBudgetOperation = new CampaignBudgetOperation(); $campaignBudgetOperation->setCreate($budget); // Issues a mutate request. $campaignBudgetServiceClient = $googleAdsClient->getCampaignBudgetServiceClient(); $response = $campaignBudgetServiceClient->mutateCampaignBudgets( MutateCampaignBudgetsRequest::build($customerId, [$campaignBudgetOperation]) ); /** @var CampaignBudget $addedBudget */ $addedBudget = $response->getResults()[0]; printf("Added budget named '%s'%s", $addedBudget->getResourceName(), PHP_EOL); return $addedBudget->getResourceName(); }
Python
# Create a budget, which can be shared by multiple campaigns. campaign_budget_operation: CampaignBudgetOperation = client.get_type( "CampaignBudgetOperation" ) campaign_budget: CampaignBudget = campaign_budget_operation.create campaign_budget.name = f"Interplanetary Budget {uuid.uuid4()}" campaign_budget.delivery_method = ( client.enums.BudgetDeliveryMethodEnum.STANDARD ) campaign_budget.amount_micros = 500000 # Add budget. campaign_budget_response: MutateCampaignBudgetsResponse try: budget_operations: List[CampaignBudgetOperation] = [ campaign_budget_operation ] campaign_budget_response = ( campaign_budget_service.mutate_campaign_budgets( customer_id=customer_id, operations=budget_operations, ) ) except GoogleAdsException as ex: handle_googleads_exception(ex)
Ruby
# Create a budget, which can be shared by multiple campaigns. campaign_budget = client.resource.campaign_budget do |cb| cb.name = "Interplanetary Budget #{(Time.new.to_f * 1000).to_i}" cb.delivery_method = :STANDARD cb.amount_micros = 500000 end operation = client.operation.create_resource.campaign_budget(campaign_budget) # Add budget. return_budget = client.service.campaign_budget.mutate_campaign_budgets( customer_id: customer_id, operations: [operation], )
Perl
# Create a campaign budget, which can be shared by multiple campaigns. my $campaign_budget = Google::Ads::GoogleAds::V21::Resources::CampaignBudget->new({ name => "Interplanetary budget #" . uniqid(), deliveryMethod => STANDARD, amountMicros => 500000 }); # Create a campaign budget operation. my $campaign_budget_operation = Google::Ads::GoogleAds::V21::Services::CampaignBudgetService::CampaignBudgetOperation ->new({create => $campaign_budget}); # Add the campaign budget. my $campaign_budgets_response = $api_client->CampaignBudgetService()->mutate({ customerId => $customer_id, operations => [$campaign_budget_operation]});
Buat kampanye dan strategi bidding
Setelah anggaran dibuat, Anda dapat membuat kampanye.
Kampanye Peningkat Permintaan memiliki
AdvertisingChannelType
DEMAND_GEN
. Tidak ada AdvertisingChannelSubType
yang harus ditetapkan.
Siapkan sasaran konversi untuk kampanye Anda.
Strategi bidding yang didukung adalah maksimalkan klik, target CPA, maksimalkan konversi, dan target ROAS.
Java
This example is not yet available in Java; you can take a look at the other languages.
C#
private MutateOperation CreateDemandGenCampaignOperation( string campaignResourceName, string budgetResourceName) { return new MutateOperation { CampaignOperation = new CampaignOperation { Create = new Campaign { Name = $"Demand Gen #{ExampleUtilities.GetRandomString()}", // Set the campaign status as PAUSED. Status = CampaignStatus.Paused, // AdvertisingChannelType must be DEMAND_GEN. AdvertisingChannelType = AdvertisingChannelType.DemandGen, // Assign the resource name with a temporary ID. ResourceName = campaignResourceName, // Set the budget using the given budget resource name. CampaignBudget = budgetResourceName, // Use the Target CPA bidding strategy. TargetCpa = new TargetCpa() { TargetCpaMicros = 1_000_000, }, ContainsEuPoliticalAdvertising = EuPoliticalAdvertisingStatus.DoesNotContainEuPoliticalAdvertising } } }; }
PHP
This example is not yet available in PHP; you can take a look at the other languages.
Python
def create_demand_gen_campaign_operation( client: GoogleAdsClient, campaign_resource_name: str, budget_resource_name: str, ) -> MutateOperation: """Creates a MutateOperation that creates a new 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. campaign_resource_name: The temporary resource name of the campaign. budget_resource_name: The resource name of the budget to assign. Returns: A MutateOperation for creating a Campaign. """ mutate_operation: MutateOperation = client.get_type("MutateOperation") campaign_operation: CampaignOperation = mutate_operation.campaign_operation campaign: Campaign = campaign_operation.create campaign.name = f"Demand Gen #{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 # AdvertisingChannelType must be DEMAND_GEN. campaign.advertising_channel_type = ( client.enums.AdvertisingChannelTypeEnum.DEMAND_GEN ) # Assign the resource name with a temporary ID. campaign.resource_name = campaign_resource_name # Set the budget using the given budget resource name. campaign.campaign_budget = budget_resource_name # Use the Target CPA bidding strategy. campaign.bidding_strategy_type = ( client.enums.BiddingStrategyTypeEnum.TARGET_CPA ) campaign.target_cpa.target_cpa_micros = 1_000_000 return mutate_operation
Ruby
This example is not yet available in Ruby; you can take a look at the other languages.
Perl
This example is not yet available in Perl; you can take a look at the other languages.
Buat grup iklan
Buat grup iklan tanpa jenis dan lampirkan ke kampanye Peningkat Permintaan.
Dengan Peningkat Permintaan, Anda dapat memilih untuk menetapkan kriteria grup lokasi dan bahasa di tingkat grup iklan.
Saat membuat grup iklan, Anda juga dapat mengonfigurasi kontrol saluran untuk memutuskan tempat iklan akan ditampilkan.
Java
This example is not yet available in Java; you can take a look at the other languages.
C#
private MutateOperation CreateAdGroupOperation( string adGroupResourceName, string campaignResourceName ) { return new MutateOperation { AdGroupOperation = new AdGroupOperation { // Creates an ad group. Create = new AdGroup { ResourceName = adGroupResourceName, Name = $"Earth to Mars Cruises #{ExampleUtilities.GetRandomString()}", Status = AdGroupStatus.Enabled, Campaign = campaignResourceName, // Select the specific channels for the ad group. // For further information on Demand Gen channel controls, see // https://developers.google.com/google-ads/api/docs/demand-gen/channel-controls DemandGenAdGroupSettings = new DemandGenAdGroupSettings { ChannelControls = new DemandGenChannelControls { SelectedChannels = new DemandGenSelectedChannels { Gmail = false, Discover = false, Display = false, YoutubeInFeed = true, YoutubeInStream = true, YoutubeShorts = true, } } } } } }; }
PHP
This example is not yet available in PHP; you can take a look at the other languages.
Python
def create_ad_group_operation( client: GoogleAdsClient, ad_group_resource_name: str, campaign_resource_name: str, ) -> MutateOperation: """Creates a MutateOperation that creates a new AdGroup. Args: client: An initialized GoogleAdsClient instance. ad_group_resource_name: The temporary resource name of the ad group. campaign_resource_name: The temporary resource name of the campaign the ad group will belong to. Returns: A MutateOperation for creating an AdGroup. """ mutate_operation: MutateOperation = client.get_type("MutateOperation") ad_group_operation: AdGroupOperation = mutate_operation.ad_group_operation # Creates an ad group. ad_group: AdGroup = ad_group_operation.create ad_group.resource_name = ad_group_resource_name ad_group.name = f"Earth to Mars Cruises #{uuid4()}" ad_group.status = client.enums.AdGroupStatusEnum.ENABLED ad_group.campaign = campaign_resource_name # Select the specific channels for the ad group. For further information on # Demand Gen channel controls, see: # https://developers.google.com/google-ads/api/docs/demand-gen/channel-controls selected_channel_controls = ( ad_group.demand_gen_ad_group_settings.channel_controls.selected_channels ) selected_channel_controls.gmail = False selected_channel_controls.discover = False selected_channel_controls.display = False selected_channel_controls.youtube_in_feed = True selected_channel_controls.youtube_in_stream = True selected_channel_controls.youtube_shorts = True return mutate_operation
Ruby
This example is not yet available in Ruby; you can take a look at the other languages.
Perl
This example is not yet available in Perl; you can take a look at the other languages.
Membuat audiens
Buat dan lampirkan audiens
menggunakan AdGroupCriterion
.
Membuat aset dan iklan
Ada tiga jenis iklan yang tersedia untuk kampanye Peningkat Permintaan:
Pertama, buat aset untuk jenis iklan ini. Lihat panduan spesifikasi dan praktik terbaik aset kampanye Peningkat Permintaan untuk mengetahui daftar aset yang tersedia untuk setiap jenis iklan Peningkat Permintaan. Panduan ini berisi petunjuk tentang aset yang diperlukan dan jumlah aset yang direkomendasikan. Sebaiknya evaluasi performa aset untuk mengoptimalkan materi iklan: bagian pelaporan membahas cara mengambil metrik performa untuk kampanye Peningkat Permintaan.
DemandGenCarouselAdInfo
memiliki aset khusus tambahan yang disebut
AdDemandGenCarouselCardAsset
.
Setelah aset dan iklan dibuat, tambahkan iklan ke grup iklan.
Java
This example is not yet available in Java; you can take a look at the other languages.
C#
private MutateOperation CreateDemandGenAdOperation( string adGroupResourceName, string videoAssetResourceName, string logoResourceName ) { Ad ad = new Ad { Name = "Demand gen video responsive ad", FinalUrls = { "http://example.com/demand_gen" }, DemandGenVideoResponsiveAd = new DemandGenVideoResponsiveAdInfo { BusinessName = new AdTextAsset { Text = "Interplanetary Cruises" }, } }; ad.DemandGenVideoResponsiveAd.Videos.Add(new AdVideoAsset { Asset = videoAssetResourceName }); ad.DemandGenVideoResponsiveAd.LogoImages.Add(new AdImageAsset { Asset = logoResourceName }); ad.DemandGenVideoResponsiveAd.Headlines.Add(new AdTextAsset { Text = "Interplanetary cruises" }); ad.DemandGenVideoResponsiveAd.LongHeadlines.Add(new AdTextAsset { Text = "Travel the World" }); ad.DemandGenVideoResponsiveAd.Descriptions.Add(new AdTextAsset { Text = "Book now for an extra discount" }); return new MutateOperation { AdGroupAdOperation = new AdGroupAdOperation { Create = new AdGroupAd { AdGroup = adGroupResourceName, Ad = ad } } }; }
PHP
This example is not yet available in PHP; you can take a look at the other languages.
Python
def create_demand_gen_ad_operation( client: GoogleAdsClient, ad_group_resource_name: str, video_asset_resource_name: str, logo_asset_resource_name: str, ) -> MutateOperation: """Creates a MutateOperation that creates a new Demand Gen Ad. Args: client: An initialized GoogleAdsClient instance. ad_group_resource_name: The ad group the ad will belong to. video_asset_resource_name: The video asset resource name. logo_asset_resource_name: The logo asset resource name. Returns: A MutateOperation for creating an AdGroupAd. """ mutate_operation: MutateOperation = client.get_type("MutateOperation") ad_group_ad_operation: AdGroupAdOperation = ( mutate_operation.ad_group_ad_operation ) ad_group_ad: AdGroupAd = ad_group_ad_operation.create ad_group_ad.ad_group = ad_group_resource_name ad_group_ad.status = client.enums.AdGroupAdStatusEnum.ENABLED ad: Ad = ad_group_ad.ad ad.name = "Demand gen multi asset ad" ad.final_urls.append(DEFAULT_FINAL_URL) demand_gen_ad: DemandGenVideoResponsiveAdInfo = ( ad.demand_gen_video_responsive_ad ) # Ensure business_name is an AssetLink and assign text to its text_asset.text demand_gen_ad.business_name.text = "Interplanetary Cruises" # If it needs to be an AssetLink to a text asset, # that would require creating another asset. # Create AssetLink for video video_asset_link: AdVideoAsset = client.get_type("AdVideoAsset") video_asset_link.asset = video_asset_resource_name demand_gen_ad.videos.append(video_asset_link) # Create AssetLink for logo logo_image_asset_link: AdImageAsset = client.get_type("AdImageAsset") logo_image_asset_link.asset = logo_asset_resource_name demand_gen_ad.logo_images.append(logo_image_asset_link) # Create AssetLink for headline headline_asset_link: AdTextAsset = client.get_type("AdTextAsset") headline_asset_link.text = "Interplanetary cruises" demand_gen_ad.headlines.append(headline_asset_link) # Create AssetLink for long headline long_headline_asset_link: AdTextAsset = client.get_type("AdTextAsset") long_headline_asset_link.text = "Travel the World" demand_gen_ad.long_headlines.append(long_headline_asset_link) # Create AssetLink for description description_asset_link: AdTextAsset = client.get_type("AdTextAsset") description_asset_link.text = "Book now for an extra discount" demand_gen_ad.descriptions.append(description_asset_link) return mutate_operation
Ruby
This example is not yet available in Ruby; you can take a look at the other languages.
Perl
This example is not yet available in Perl; you can take a look at the other languages.