יש שני סוגים של תקציבים: תקציבים יומיים ממוצעים ותקציבים כוללים של קמפיינים. אפשר ליצור את שני הסוגים באמצעות CampaignBudgetService.
יצירת תקציב יומי ממוצע
זה הסכום הממוצע שאתם מוכנים להוציא ביום על קמפיין.
אפשר להגדיר תקציב יומי ממוצע באמצעות השדה amount_micros של CampaignBudget. התקציב period מוגדר כברירת מחדל ל-DAILY.
מאחר שערך ברירת המחדל של explicitly_shared הוא true אם הוא לא מצוין בפעולת create, צריך להגדיר באופן מפורש את explicitly_shared כ-false כדי ליצור תקציב לא משותף לקמפיין יחיד, כמו בדוגמה הבאה:
Java
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מציעה סכום תקציב חדש לקמפיינים שהחזר ה-ROI שלהם צפוי לגדול בעקבות התאמת התקציב.
FORECASTING_CAMPAIGN_BUDGETמציעה סכום תקציב חדש לקמפיינים שצפויים להיות בהגבלת תקציב בעתיד.
במדריך ציון אופטימיזציה והמלצות מפורטים סוגי המלצות נוספים והנחיות לעבודה עם המלצות ב-Google Ads API.