Le offerte possono essere impostate a diversi livelli della gerarchia della campagna: campagna, gruppo di annunci o criterio del gruppo di annunci. Un'offerta impostata a un livello inferiore sostituisce quelle impostate a livelli superiori. Ad esempio, un'offerta impostata per un singolo gruppo di annunci all'interno di una campagna sostituirà l'offerta della strategia di offerta a livello di campagna.
Aggiorna le offerte
È possibile impostare contemporaneamente più offerte di tipi diversi. Ad esempio, è possibile impostare sia cpc_bid_micros
sia cpm_bid_micros
, ma viene utilizzata solo l'offerta pertinente per il tipo di strategia di offerta selezionato.
Quando aggiorni le offerte, puoi includere solo quelle che vuoi aggiornare. Google Ads aggiornerà queste offerte, ma non modificherà, aggiungerà o rimuoverà le altre offerte.
Il seguente esempio di codice aggiorna l'offerta CPC di un gruppo di annunci esistente.
Java
public static void main(String[] args) { UpdateAdGroupParams params = new UpdateAdGroupParams(); if (!params.parseArguments(args)) { // Either pass the required parameters for this example on the command line, or insert them // into the code here. See the parameter class definition above for descriptions. params.customerId = Long.parseLong("INSERT_CUSTOMER_ID_HERE"); params.adGroupId = Long.parseLong("INSERT_AD_GROUP_ID_HERE"); params.cpcBidMicroAmount = Long.parseLong("INSERT_CPC_BID_MICRO_AMOUNT_HERE"); } GoogleAdsClient googleAdsClient = null; try { googleAdsClient = GoogleAdsClient.newBuilder().fromPropertiesFile().build(); } catch (FileNotFoundException fnfe) { System.err.printf( "Failed to load GoogleAdsClient configuration from file. Exception: %s%n", fnfe); System.exit(1); } catch (IOException ioe) { System.err.printf("Failed to create GoogleAdsClient. Exception: %s%n", ioe); System.exit(1); } try { new UpdateAdGroup() .runExample( googleAdsClient, params.customerId, params.adGroupId, params.cpcBidMicroAmount); } catch (GoogleAdsException gae) { // GoogleAdsException is the base class for most exceptions thrown by an API request. // Instances of this exception have a message and a GoogleAdsFailure that contains a // collection of GoogleAdsErrors that indicate the underlying causes of the // GoogleAdsException. System.err.printf( "Request ID %s failed due to GoogleAdsException. Underlying errors:%n", gae.getRequestId()); int i = 0; for (GoogleAdsError googleAdsError : gae.getGoogleAdsFailure().getErrorsList()) { System.err.printf(" Error %d: %s%n", i++, googleAdsError); } System.exit(1); } }
C#
public void Run(GoogleAdsClient client, long customerId, long adGroupId, long? cpcBidMicroAmount) { AdGroupServiceClient adGroupService = client.GetService(Services.V19.AdGroupService); // Create an ad group with the specified ID. AdGroup adGroup = new AdGroup(); adGroup.ResourceName = ResourceNames.AdGroup(customerId, adGroupId); // Pause the ad group. adGroup.Status = AdGroupStatusEnum.Types.AdGroupStatus.Paused; // Update the CPC bid if specified. if (cpcBidMicroAmount != null) { adGroup.CpcBidMicros = cpcBidMicroAmount.Value; } // Create the operation. AdGroupOperation operation = new AdGroupOperation() { Update = adGroup, UpdateMask = FieldMasks.AllSetFieldsOf(adGroup) }; try { // Update the ad group. MutateAdGroupsResponse retVal = adGroupService.MutateAdGroups( customerId.ToString(), new AdGroupOperation[] { operation }); // Display the results. MutateAdGroupResult adGroupResult = retVal.Results[0]; Console.WriteLine($"Ad group with resource name '{adGroupResult.ResourceName}' " + "was updated."); } 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, int $adGroupId, $bidMicroAmount ) { // Creates an ad group object with the specified resource name and other changes. $adGroup = new AdGroup([ 'resource_name' => ResourceNames::forAdGroup($customerId, $adGroupId), 'cpc_bid_micros' => $bidMicroAmount, 'status' => AdGroupStatus::PAUSED ]); // Constructs an operation that will update the ad group with the specified resource name, // using the FieldMasks utility to derive the update mask. This mask tells the Google Ads // API which attributes of the ad group you want to change. $adGroupOperation = new AdGroupOperation(); $adGroupOperation->setUpdate($adGroup); $adGroupOperation->setUpdateMask(FieldMasks::allSetFieldsOf($adGroup)); // Issues a mutate request to update the ad group. $adGroupServiceClient = $googleAdsClient->getAdGroupServiceClient(); $response = $adGroupServiceClient->mutateAdGroups(MutateAdGroupsRequest::build( $customerId, [$adGroupOperation] )); // Prints the resource name of the updated ad group. /** @var AdGroup $updatedAdGroup */ $updatedAdGroup = $response->getResults()[0]; printf( "Updated ad group with resource name: '%s'%s", $updatedAdGroup->getResourceName(), PHP_EOL ); }
Python
def main(client, customer_id, ad_group_id, cpc_bid_micro_amount): ad_group_service = client.get_service("AdGroupService") # Create ad group operation. ad_group_operation = client.get_type("AdGroupOperation") ad_group = ad_group_operation.update ad_group.resource_name = ad_group_service.ad_group_path( customer_id, ad_group_id ) ad_group.status = client.enums.AdGroupStatusEnum.PAUSED ad_group.cpc_bid_micros = cpc_bid_micro_amount client.copy_from( ad_group_operation.update_mask, protobuf_helpers.field_mask(None, ad_group._pb), ) # Update the ad group. ad_group_response = ad_group_service.mutate_ad_groups( customer_id=customer_id, operations=[ad_group_operation] ) print(f"Updated ad group {ad_group_response.results[0].resource_name}.")
Ruby
def update_ad_group(customer_id, ad_group_id, bid_micro_amount) # GoogleAdsClient will read a config file from # ENV['HOME']/google_ads_config.rb when called without parameters client = Google::Ads::GoogleAds::GoogleAdsClient.new resource_name = client.path.ad_group(customer_id, ad_group_id) operation = client.operation.update_resource.ad_group(resource_name) do |ag| ag.status = :PAUSED ag.cpc_bid_micros = bid_micro_amount end response = client.service.ad_group.mutate_ad_groups( customer_id: customer_id, operations: [operation], ) puts "Ad group with resource name = '#{response.results.first.resource_name}' was updated." end
Perl
sub update_ad_group { my ($api_client, $customer_id, $ad_group_id, $cpc_bid_micro_amount) = @_; # Create an ad group with the proper resource name and any other changes. my $ad_group = Google::Ads::GoogleAds::V19::Resources::AdGroup->new({ resourceName => Google::Ads::GoogleAds::V19::Utils::ResourceNames::ad_group( $customer_id, $ad_group_id ), status => PAUSED, cpcBidMicros => $cpc_bid_micro_amount }); # Create an ad group operation for update, using the FieldMasks utility to # derive the update mask. my $ad_group_operation = Google::Ads::GoogleAds::V19::Services::AdGroupService::AdGroupOperation-> new({ update => $ad_group, updateMask => all_set_fields_of($ad_group)}); # Update the ad group. my $ad_groups_response = $api_client->AdGroupService()->mutate({ customerId => $customer_id, operations => [$ad_group_operation]}); printf "Updated ad group with resource name: '%s'.\n", $ad_groups_response->{results}[0]{resourceName}; return 1; }
Rimuovere le offerte
Per rimuovere un'offerta, aggiorna il relativo campo su null
.
Dimensioni dei criteri della Rete Display
Per gli annunci pubblicati sulla Rete Display, esistono diverse dimensioni per le quali è possibile impostare un'offerta per gruppo di annunci. Se sono impostate più offerte in
diverse dimensioni, il
campo
display_custom_bid_dimension
può essere utilizzato per specificare la
dimensione da utilizzare per le offerte absolute. Gli annunci sulla rete di ricerca utilizzano sempre le offerte per parole chiave.
Puoi anche impostare un
aggiustamento delle offerte da
utilizzare quando il criterio non si trova in una dimensione di offerta assoluta. Puoi accedervi utilizzando il campo bid_modifier
del criterio del gruppo di annunci.