Un presupuesto se puede aplicar a una sola campaña o se puede compartir en muchas campañas.
Configuración
Cuando creas un nuevo CampaignBudget
con la API de Google Ads, puedes especificar si se puede compartir con el BoolValue
del campo explicitly_shared
:
true
(predeterminado): Se puede compartir entre varias campañas.false
: solo lo puede utilizar una campaña.
Los presupuestos compartidos de forma explícita aparecen en la Biblioteca compartida de una cuenta en la IU de Google Ads, mientras que un presupuesto no compartido aparece solo en la Configuración de la campaña asociada.
En el siguiente ejemplo, en el que se crea un presupuesto nuevo, el presupuesto se comparte porque explicitly_shared
se establece en true
.
Java
private String createSharedCampaignBudget(GoogleAdsClient googleAdsClient, long customerId) { try (CampaignBudgetServiceClient campaignBudgetServiceClient = googleAdsClient.getLatestVersion().createCampaignBudgetServiceClient()) { // Creates a shared budget. CampaignBudget budget = CampaignBudget.newBuilder() .setName("Shared Interplanetary Budget #" + getPrintableDateTime()) .setAmountMicros(50_000_000L) .setDeliveryMethod(BudgetDeliveryMethod.STANDARD) .setExplicitlyShared(true) .build(); // Constructs an operation that will create a shared budget. CampaignBudgetOperation operation = CampaignBudgetOperation.newBuilder().setCreate(budget).build(); // Sends the operation in a mutate request. MutateCampaignBudgetsResponse response = campaignBudgetServiceClient.mutateCampaignBudgets( Long.toString(customerId), Lists.newArrayList(operation)); MutateCampaignBudgetResult mutateCampaignBudgetResult = response.getResults(0); // Prints the resource name of the created object. System.out.printf( "Created shared budget with resource name: '%s'.%n", mutateCampaignBudgetResult.getResourceName()); return mutateCampaignBudgetResult.getResourceName(); } }
C#
private string CreateSharedBudget(GoogleAdsClient client, long customerId, string name, long amount) { // Get the CampaignBudgetService. CampaignBudgetServiceClient campaignBudgetService = client.GetService(Services.V18.CampaignBudgetService); // Create a shared budget. CampaignBudget budget = new CampaignBudget() { Name = name, AmountMicros = amount, DeliveryMethod = BudgetDeliveryMethodEnum.Types.BudgetDeliveryMethod.Standard, ExplicitlyShared = true }; // Create the operation. CampaignBudgetOperation campaignBudgetOperation = new CampaignBudgetOperation() { Create = budget }; // Make the mutate request. MutateCampaignBudgetsResponse retVal = campaignBudgetService.MutateCampaignBudgets( customerId.ToString(), new CampaignBudgetOperation[] { campaignBudgetOperation }); return retVal.Results[0].ResourceName; }
PHP
private static function createSharedCampaignBudget( GoogleAdsClient $googleAdsClient, int $customerId ) { // Creates a shared budget. $budget = new CampaignBudget([ 'name' => 'Shared Interplanetary Budget #' . Helper::getPrintableDatetime(), 'delivery_method' => BudgetDeliveryMethod::STANDARD, // Sets the amount of budget. 'amount_micros' => 50000000, // Makes the budget explicitly shared. 'explicitly_shared' => true ]); // Constructs a campaign budget operation. $campaignBudgetOperation = new CampaignBudgetOperation(); $campaignBudgetOperation->setCreate($budget); // Issues a mutate request to create the budget. $campaignBudgetServiceClient = $googleAdsClient->getCampaignBudgetServiceClient(); $response = $campaignBudgetServiceClient->mutateCampaignBudgets( MutateCampaignBudgetsRequest::build($customerId, [$campaignBudgetOperation]) ); /** @var CampaignBudget $addedBudget */ $addedBudget = $response->getResults()[0]; printf( "Created a shared budget with resource name '%s'.%s", $addedBudget->getResourceName(), PHP_EOL ); return $addedBudget->getResourceName(); }
Python
# Create a budget, which can be shared by multiple campaigns. campaign_budget_operation = client.get_type("CampaignBudgetOperation") campaign_budget = 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 campaign_budget.explicitly_shared = True # Add budget. try: campaign_budget_response = ( campaign_budget_service.mutate_campaign_budgets( customer_id=customer_id, operations=[campaign_budget_operation] ) ) campaign_budget_id = campaign_budget_response.results[0].resource_name print(f'Budget "{campaign_budget_id}" was created.') except GoogleAdsException as ex: handle_googleads_exception(ex)
Ruby
# Create a budget, which can be shared by multiple campaigns. budget = client.resource.campaign_budget do |cb| cb.name = "Interplanetary budget ##{(Time.new.to_f * 1000).to_i}" cb.amount_micros = 50_000_000 cb.delivery_method = :STANDARD cb.explicitly_shared = true end operation = client.operation.create_resource.campaign_budget(budget) response = client.service.campaign_budget.mutate_campaign_budgets( customer_id: customer_id, operations: [operation], ) budget_id = response.results.first.resource_name
Perl
sub create_shared_campaign_buget { my ($api_client, $customer_id) = @_; # Create a shared budget. my $campaign_budget = Google::Ads::GoogleAds::V18::Resources::CampaignBudget->new({ name => "Shared Interplanetary Budget #" . uniqid(), deliveryMethod => STANDARD, # Set the amount of budget. amountMicros => 50000000, # Makes the budget explicitly shared. explicitlyShared => 'true' }); # Create a campaign budget operation. my $campaign_budget_operation = Google::Ads::GoogleAds::V18::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]}); my $campaign_budget_resource_name = $campaign_budgets_response->{results}[0]{resourceName}; printf "Created a shared budget with resource name: '%s'.\n", $campaign_budget_resource_name; return $campaign_budget_resource_name; }
Determina si el presupuesto de una campaña es compartido
Para recuperar el valor de configuración del presupuesto, busca el campo campaign_budget.explicitly_shared
. A continuación, se muestra la consulta de GAQL para el campo, cuando se filtra por ID de presupuesto:
SELECT campaign_budget.explicitly_shared FROM campaign_budget WHERE campaign_budget.id = campaign_budget_id