إنشاء ميزانيات الحملات

هناك نوعان من الميزانيات: متوسط الميزانيات اليومية والميزانيات الإجمالية للحملة. يمكنك إنشاء أيّ من النوعَين باستخدام CampaignBudgetService.

إنشاء متوسط ميزانية يومية

هذا هو متوسط المبلغ الذي تريد إنفاقه يوميًا على حملة معيّنة. يمكنك ضبط متوسّط ميزانية يومية باستخدام الحقل amount_micros في CampaignBudget. يتم ضبط الميزانية period تلقائيًا على DAILY.

بما أنّ explicitly_shared يتم ضبطه تلقائيًا على true في حال حذفه في عملية create، عليك ضبط explicitly_shared على false بشكل صريح لإنشاء ميزانية غير مشتركة لحملة واحدة، كما هو موضّح في المثال التالي:

جافا

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.V26.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::V26::Resources::CampaignBudget->new({
    name           => "Interplanetary budget #" . uniqid(),
    deliveryMethod => STANDARD,
    amountMicros   => 500000
  });

# Create a campaign budget operation.
my $campaign_budget_operation =
  Google::Ads::GoogleAds::V26::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]});
      

curl

إنشاء ميزانية إجمالية للحملة

هذا هو المبلغ الإجمالي الذي تريد إنفاقه طوال مدة الحملة. لإنشاء ميزانية إجمالية للحملة، اضبط الميزانية period على CUSTOM_PERIOD واضبط total_amount_micros. لا يمكن مشاركة الميزانيات الإجمالية للحملات على مستوى الحملات، لذا عليك ضبط explicitly_shared على false عند إنشاء ميزانية باستخدام period من CUSTOM_PERIOD.

عند الترميز، تكون الحقول هي نفسها المتعلّقة بمتوسط الميزانية اليومية، باستثناء period وtotal_amount_micros.

اقتراحات ميزانية الحملة

توفّر Google Ads API عدة أنواع من الاقتراحات لمساعدتك في تحسين ميزانيات حملاتك:

  • يقترح CAMPAIGN_BUDGET مبلغ ميزانية جديدًا للحملات المقيّدة بميزانية محدودة.

  • MOVE_UNUSED_BUDGET تُبرز فرص إعادة تخصيص الميزانية الزائدة من حملة إلى حملة أخرى مقيّدة بميزانية محدودة.

  • يقترح MARGINAL_ROI_CAMPAIGN_BUDGET مبلغ ميزانية جديدًا للحملات التي من المتوقّع أن يرتفع عائد استثمارها عند تعديل الميزانية.

  • FORECASTING_CAMPAIGN_BUDGET يقترح مبلغًا جديدًا للميزانية للحملات التي من المتوقّع أن تصبح محدودة الميزانية في المستقبل.

للاطّلاع على أنواع اقتراحات إضافية وإرشادات حول التعامل مع الاقتراحات في Google Ads API، يُرجى الانتقال إلى دليل نتيجة التحسين والاقتراحات.