تنظیم دستی قیمت‌های پیشنهادی

قیمت‌های پیشنهادی را می‌توان در سطوح مختلف سلسله‌مراتب پویش تنظیم کرد: پویش، گروه آگهی، یا معیار گروه آگهی. قیمت پیشنهادی که در سطح پایین‌تری تنظیم شده باشد، قیمت‌های پیشنهادی تنظیم‌شده در سطوح بالاتر را ملغی می‌کند. برای مثال، قیمت پیشنهادی تنظیم‌شده برای یک گروه آگهی تکی در یک پویش، قیمت پیشنهادی استراتژی پیشنهاد قیمت در سطح پویش را لغو می‌کند.

به‌روزرسانی پیشنهاد قیمت

چندین پیشنهاد قیمت از انواع مختلف را می‌توان به‌طور هم‌زمان تنظیم کرد؛ برای مثال، cpc_bid_micros و cpm_bid_micros هر دو می‌توانند تنظیم شوند، اما فقط پیشنهاد قیمتی که برای نوع استراتژی پیشنهاد قیمت انتخابی مرتبط است استفاده می‌شود.

هنگام به‌روزرسانی پیشنهادهای قیمت، فقط پیشنهادهای قیمتی را که می‌خواهید به‌روز کنید اضافه کنید. سپس Google Ads آن قیمت‌های پیشنهادی را بدون تغییر، افزودن، یا برداشتن قیمت‌های پیشنهادی دیگر به‌روزرسانی می‌کند.

نمونه کد زیر قیمت پیشنهادی کلیک‌بهای گروه آگهی موجود را به‌روز می‌کند:

جاوا

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.V26.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: GoogleAdsClient,
    customer_id: str,
    ad_group_id: str,
    cpc_bid_micro_amount: int,
) -> None:
    ad_group_service: AdGroupServiceClient = client.get_service(
        "AdGroupService"
    )

    # Create ad group operation.
    ad_group_operation: AdGroupOperation = client.get_type("AdGroupOperation")
    ad_group: AdGroup = 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),
    )

    operations: List[AdGroupAdOperation] = [ad_group_operation]

    # Update the ad group.
    ad_group_response: MutateAdGroupsResponse = (
        ad_group_service.mutate_ad_groups(
            customer_id=customer_id,
            operations=operations,
        )
    )

    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
      

پرل

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::V26::Resources::AdGroup->new({
      resourceName =>
        Google::Ads::GoogleAds::V26::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::V26::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;
}
      

فر کردن

برداشتن قیمت‌های پیشنهادی

برای برداشتن قیمت پیشنهادی لغو (برای مثال، cpc_bid_micros در AdGroupCriterion)، عملیات به‌روزرسانی ارسال کنید که در آن فیلد قیمت پیشنهادی در شیء منبع تنظیم‌نشده باقی بماند (یا در JSON روی null تنظیم شود) و به‌طور صریح مسیر فیلد قیمت پیشنهادی را در update_mask (FieldMask) عملیات اضافه کنید.

ابعاد معیارهای «شبکه تبلیغات»

برای آگهی‌هایی که در «شبکه تبلیغات» اجرا می‌شوند، چندین بُعد مختلف وجود دارد که می‌توان برای آن‌ها قیمت پیشنهادی گروه آگهی تنظیم کرد. اگر چند پیشنهاد قیمت در ابعاد مختلف تنظیم شده باشد، می‌توان از فیلد display_custom_bid_dimension برای مشخص کردن بعدی که باید برای پیشنهادهای قیمت مطلق استفاده شود استفاده کرد. آگهی‌های موجود در «شبکه جستجو» همیشه از پیشنهادهای قیمت کلیدواژه استفاده می‌کنند.

همچنین می‌توانید اصلاح قیمت پیشنهادی را طوری تنظیم کنید که وقتی معیار در بُعد قیمت پیشنهادی مطلق نیست استفاده شود. بااستفاده از فیلد bid_modifier معیار گروه آگهی می‌توان به آن دسترسی پیدا کرد.