Puedes asignar un presupuesto a una campaña, desvincular un presupuesto de una campaña o recuperar las campañas que están asignadas a un presupuesto específico.
Cómo asignar un presupuesto a una campaña
Después de
crear un CampaignBudget
con CampaignBudgetService
o identificar uno existente,
usa su valor de campo resource_name
en una llamada a CampaignService. Si la operación de creación del presupuesto se realiza correctamente en una solicitud independiente, pero falla la asignación de la campaña posterior, tendrás un presupuesto huérfano (un presupuesto que no está asociado con ninguna campaña). Para evitar los presupuestos huérfanos, crea
el CampaignBudget (con un ID de recurso temporal) y el Campaign
de forma atómica en una sola solicitud GoogleAdsService.Mutate,
o reutiliza o quita los presupuestos
sin usar.
Campaña nueva
Para una campaña nueva, en CampaignOperation.create, establece el campo campaign_budget del objeto Campaign en un nombre de recurso de presupuesto, como se muestra en el siguiente ejemplo de código:
Java
// Creates the campaign. Campaign campaign = Campaign.newBuilder() .setName("Interplanetary Cruise #" + getPrintableDateTime()) .setAdvertisingChannelType(AdvertisingChannelType.SEARCH) // Recommendation: Set the campaign to PAUSED when creating it to prevent // the ads from immediately serving. Set to ENABLED once you've added // targeting and the ads are ready to serve .setStatus(CampaignStatus.PAUSED) // Sets the bidding strategy and budget. .setManualCpc(ManualCpc.newBuilder().build()) .setCampaignBudget(budgetResourceName) // Adds the networkSettings configured above. .setNetworkSettings(networkSettings) // Declares whether this campaign serves political ads targeting the EU. .setContainsEuPoliticalAdvertising(DOES_NOT_CONTAIN_EU_POLITICAL_ADVERTISING) // Optional: Sets the start & end dates. .setStartDateTime(new DateTime().plusDays(1).toString("yyyy-MM-dd 00:00:00")) .setEndDateTime(new DateTime().plusDays(30).toString("yyyy-MM-dd 23:59:59")) .build();
C#
// Create the campaign. Campaign campaign = new Campaign() { Name = "Interplanetary Cruise #" + ExampleUtilities.GetRandomString(), AdvertisingChannelType = AdvertisingChannelType.Search, // Recommendation: Set the campaign to PAUSED when creating it to prevent // the ads from immediately serving. Set to ENABLED once you've added // targeting and the ads are ready to serve Status = CampaignStatus.Paused, // Set the bidding strategy and budget. ManualCpc = new ManualCpc(), CampaignBudget = budget, // Set the campaign network options. NetworkSettings = new NetworkSettings { TargetGoogleSearch = true, TargetSearchNetwork = true, // Enable Display Expansion on Search campaigns. See // https://support.google.com/google-ads/answer/7193800 to learn more. TargetContentNetwork = true, TargetPartnerSearchNetwork = false }, // Declare whether or not this campaign contains political ads targeting the EU. ContainsEuPoliticalAdvertising = EuPoliticalAdvertisingStatus.DoesNotContainEuPoliticalAdvertising, // Optional: Set the start date. StartDateTime = DateTime.Now.AddDays(1).ToString("yyyyMMdd 00:00:00"), // Optional: Set the end date. EndDateTime = DateTime.Now.AddYears(1).ToString("yyyyMMdd 23:59:59"), };
PHP
$campaign = new Campaign([ 'name' => 'Interplanetary Cruise #' . Helper::getPrintableDatetime(), 'advertising_channel_type' => AdvertisingChannelType::SEARCH, // Recommendation: Set the campaign to PAUSED when creating it to prevent // the ads from immediately serving. Set to ENABLED once you've added // targeting and the ads are ready to serve. 'status' => CampaignStatus::PAUSED, // Sets the bidding strategy and budget. 'manual_cpc' => new ManualCpc(), 'campaign_budget' => $budgetResourceName, // Adds the network settings configured above. 'network_settings' => $networkSettings, // Declare whether or not this campaign serves political ads targeting the EU. 'contains_eu_political_advertising' => EuPoliticalAdvertisingStatus::DOES_NOT_CONTAIN_EU_POLITICAL_ADVERTISING, // Optional: Sets the start and end dates. 'start_date_time' => date('Y-m-d 00:00:00', strtotime('+1 day')), 'end_date_time' => date('Y-m-d 23:59:59', strtotime('+1 month')) ]);
Python
# Create campaign. campaign_operation: CampaignOperation = client.get_type("CampaignOperation") campaign: Campaign = campaign_operation.create campaign.name = f"Interplanetary Cruise {uuid.uuid4()}" campaign.advertising_channel_type = ( client.enums.AdvertisingChannelTypeEnum.SEARCH ) # Recommendation: Set the campaign to PAUSED when creating it to prevent # the ads from immediately serving. Set to ENABLED once you've added # targeting and the ads are ready to serve. campaign.status = client.enums.CampaignStatusEnum.PAUSED # Set the bidding strategy and budget. campaign.manual_cpc = client.get_type("ManualCpc") campaign.campaign_budget = campaign_budget_response.results[0].resource_name # Set the campaign network options. campaign.network_settings.target_google_search = True campaign.network_settings.target_search_network = True campaign.network_settings.target_partner_search_network = False # Enable Display Expansion on Search campaigns. For more details see: # https://support.google.com/google-ads/answer/7193800 campaign.network_settings.target_content_network = True # 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: Set the start date. start_time: datetime.date = datetime.date.today() + datetime.timedelta( days=1 ) campaign.start_date_time = datetime.date.strftime( start_time, _START_DATE_FORMAT ) # Optional: Set the end date. end_time: datetime.date = start_time + datetime.timedelta(weeks=4) campaign.end_date_time = datetime.date.strftime(end_time, _END_DATE_FORMAT)
Ruby
# Create campaign. campaign = client.resource.campaign do |c| c.name = "Interplanetary Cruise #{(Time.new.to_f * 1000).to_i}" c.advertising_channel_type = :SEARCH # Recommendation: Set the campaign to PAUSED when creating it to prevent # the ads from immediately serving. Set to ENABLED once you've added # targeting and the ads are ready to serve. c.status = :PAUSED # Set the bidding strategy and budget. c.manual_cpc = client.resource.manual_cpc c.campaign_budget = return_budget.results.first.resource_name # Set the campaign network options. c.network_settings = client.resource.network_settings do |ns| ns.target_google_search = true ns.target_search_network = true # Enable Display Expansion on Search campaigns. See # https://support.google.com/google-ads/answer/7193800 to learn more. ns.target_content_network = true ns.target_partner_search_network = false end # 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: Set the start date. c.start_date_time = DateTime.parse((Date.today + 1).to_s).strftime('%Y%m%d %H:%M:%S') # Optional: Set the end date. c.end_date_time = DateTime.parse((Date.today.next_year).to_s).strftime('%Y%m%d %H:%M:%S') end
Perl
# Create a campaign. my $campaign = Google::Ads::GoogleAds::V26::Resources::Campaign->new({ name => "Interplanetary Cruise #" . uniqid(), advertisingChannelType => SEARCH, # Recommendation: Set the campaign to PAUSED when creating it to stop # the ads from immediately serving. Set to ENABLED once you've added # targeting and the ads are ready to serve. status => PAUSED, # Set the bidding strategy and budget. manualCpc => Google::Ads::GoogleAds::V26::Common::ManualCpc->new(), campaignBudget => $campaign_budgets_response->{results}[0]{resourceName}, # Set the campaign network options. networkSettings => Google::Ads::GoogleAds::V26::Resources::NetworkSettings->new({ targetGoogleSearch => "true", targetSearchNetwork => "true", # Enable Display Expansion on Search campaigns. See # https://support.google.com/google-ads/answer/7193800 to learn more. targetContentNetwork => "true", targetPartnerSearchNetwork => "false" } ), # 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, # Optional: Set the start datetime. The campaign starts tomorrow. startDateTime => strftime("%Y%m%d 00:00:00", localtime(time + 60 * 60 * 24)), # Optional: Set the end datetime. The campaign runs for 30 days. endDateTime => strftime("%Y%m%d 23:59:59", localtime(time + 60 * 60 * 24 * 30)), });
curl
Campaña existente
Para reemplazar el presupuesto de una campaña existente, en una operación CampaignOperation.update, establece el campo campaign_budget del objeto Campaign en el nombre del recurso de un presupuesto existente (junto con cualquier otro campo de la campaña que desees establecer). Esto reemplaza el presupuesto existente asignado a la campaña por el que se especifica en el campo campaign_budget, ya que una campaña solo se puede asociar con un presupuesto a la vez.
Cómo desasociar un presupuesto de una campaña
Una campaña siempre debe estar asociada a un presupuesto. Para quitar un presupuesto de una campaña, cambia el presupuesto asociado a ella y, de este modo, reemplázalo por otro. Para identificar las campañas que usan un presupuesto en particular, consulta la siguiente sección.
Cómo recuperar las campañas asignadas a un presupuesto
Obtener la lista de campañas que usan el mismo presupuesto puede ser útil para equilibrar el uso del presupuesto. La siguiente consulta de GAQL devuelve todas las campañas para el ID de presupuesto especificado:
SELECT campaign.id FROM campaign WHERE campaign_budget.id = campaign_budget_id