Chỉ định ngân sách chiến dịch

Bạn có thể chỉ định ngân sách cho một chiến dịch, huỷ liên kết ngân sách với một chiến dịch hoặc truy xuất các chiến dịch được chỉ định cho một ngân sách cụ thể.

Chỉ định ngân sách cho chiến dịch

Sau khi tạo một CampaignBudget bằng CampaignBudgetService hoặc xác định một hiện có, bạn phải sử dụng giá trị trường resource_name của CampaignService trong một lệnh gọi tiếp theo. Nếu thao tác tạo ngân sách thành công nhưng thao tác chỉ định chiến dịch không thành công, bạn sẽ có một ngân sách không liên kết (ngân sách không được liên kết với bất kỳ chiến dịch nào). Bạn nên sử dụng lại hoặc xoá những ngân sách như vậy.

Chiến dịch mới

Đối với một chiến dịch mới, trong CampaignOperation.create, hãy đặt trường campaign_budget của đối tượng Campaign thành tên tài nguyên ngân sách, như minh hoạ trong ví dụ về mã bên dưới.

Java

// Creates the campaign.
Campaign campaign =
    Campaign.newBuilder()
        .setName("Interplanetary Cruise #" + getPrintableDateTime())
        .setAdvertisingChannelType(AdvertisingChannelType.SEARCH)
        // Recommendation: Set the campaign to PAUSED when creating it to prevent
        // the ads from immediately serving. Set to ENABLED once you've added
        // targeting and the ads are ready to serve
        .setStatus(CampaignStatus.PAUSED)
        // Sets the bidding strategy and budget.
        .setManualCpc(ManualCpc.newBuilder().build())
        .setCampaignBudget(budgetResourceName)
        // Adds the networkSettings configured above.
        .setNetworkSettings(networkSettings)
        // Declares whether this campaign serves political ads targeting the EU.
        .setContainsEuPoliticalAdvertising(DOES_NOT_CONTAIN_EU_POLITICAL_ADVERTISING)
        // Optional: Sets the start & end dates.
        .setStartDate(new DateTime().plusDays(1).toString("yyyyMMdd"))
        .setEndDate(new DateTime().plusDays(30).toString("yyyyMMdd"))
        .build();
      

C#

// Create the campaign.
Campaign campaign = new Campaign()
{
    Name = "Interplanetary Cruise #" + ExampleUtilities.GetRandomString(),
    AdvertisingChannelType = AdvertisingChannelType.Search,

    // Recommendation: Set the campaign to PAUSED when creating it to prevent
    // the ads from immediately serving. Set to ENABLED once you've added
    // targeting and the ads are ready to serve
    Status = CampaignStatus.Paused,

    // Set the bidding strategy and budget.
    ManualCpc = new ManualCpc(),
    CampaignBudget = budget,

    // Set the campaign network options.
    NetworkSettings = new NetworkSettings
    {
        TargetGoogleSearch = true,
        TargetSearchNetwork = true,
        // Enable Display Expansion on Search campaigns. See
        // https://support.google.com/google-ads/answer/7193800 to learn more.
        TargetContentNetwork = true,
        TargetPartnerSearchNetwork = false
    },

    // Declare whether or not this campaign contains political ads targeting the EU.
    ContainsEuPoliticalAdvertising = EuPoliticalAdvertisingStatus.DoesNotContainEuPoliticalAdvertising,

    // Optional: Set the start date.
    StartDate = DateTime.Now.AddDays(1).ToString("yyyyMMdd"),

    // Optional: Set the end date.
    EndDate = DateTime.Now.AddYears(1).ToString("yyyyMMdd"),
};
      

PHP

$campaign = new Campaign([
    'name' => 'Interplanetary Cruise #' . Helper::getPrintableDatetime(),
    'advertising_channel_type' => AdvertisingChannelType::SEARCH,
    // Recommendation: Set the campaign to PAUSED when creating it to prevent
    // the ads from immediately serving. Set to ENABLED once you've added
    // targeting and the ads are ready to serve.
    'status' => CampaignStatus::PAUSED,
    // Sets the bidding strategy and budget.
    'manual_cpc' => new ManualCpc(),
    'campaign_budget' => $budgetResourceName,
    // Adds the network settings configured above.
    'network_settings' => $networkSettings,
    // Declare whether or not this campaign serves political ads targeting the EU.
    'contains_eu_political_advertising' =>
        EuPoliticalAdvertisingStatus::DOES_NOT_CONTAIN_EU_POLITICAL_ADVERTISING
    // Optional: Sets the start and end dates.
    'start_date' => date('Ymd', strtotime('+1 day')),
    'end_date' => date('Ymd', strtotime('+1 month'))
]);
      

Python

# Create campaign.
campaign_operation: CampaignOperation = client.get_type("CampaignOperation")
campaign: Campaign = campaign_operation.create
campaign.name = f"Interplanetary Cruise {uuid.uuid4()}"
campaign.advertising_channel_type = (
    client.enums.AdvertisingChannelTypeEnum.SEARCH
)

# Recommendation: Set the campaign to PAUSED when creating it to prevent
# the ads from immediately serving. Set to ENABLED once you've added
# targeting and the ads are ready to serve.
campaign.status = client.enums.CampaignStatusEnum.PAUSED

# Set the bidding strategy and budget.
campaign.manual_cpc = client.get_type("ManualCpc")
campaign.campaign_budget = campaign_budget_response.results[0].resource_name

# Set the campaign network options.
campaign.network_settings.target_google_search = True
campaign.network_settings.target_search_network = True
campaign.network_settings.target_partner_search_network = False
# Enable Display Expansion on Search campaigns. For more details see:
# https://support.google.com/google-ads/answer/7193800
campaign.network_settings.target_content_network = True

# Declare whether or not this campaign serves political ads targeting the
# EU. Valid values are:
#   CONTAINS_EU_POLITICAL_ADVERTISING
#   DOES_NOT_CONTAIN_EU_POLITICAL_ADVERTISING
campaign.contains_eu_political_advertising = (
    client.enums.EuPoliticalAdvertisingStatusEnum.DOES_NOT_CONTAIN_EU_POLITICAL_ADVERTISING
)

# Optional: Set the start date.
start_time: datetime.date = datetime.date.today() + datetime.timedelta(
    days=1
)
campaign.start_date = datetime.date.strftime(start_time, _DATE_FORMAT)

# Optional: Set the end date.
end_time: datetime.date = start_time + datetime.timedelta(weeks=4)
campaign.end_date = datetime.date.strftime(end_time, _DATE_FORMAT)
      

Ruby

# Create campaign.
campaign = client.resource.campaign do |c|
  c.name = "Interplanetary Cruise #{(Time.new.to_f * 1000).to_i}"
  c.advertising_channel_type = :SEARCH

  # Recommendation: Set the campaign to PAUSED when creating it to prevent
  # the ads from immediately serving. Set to ENABLED once you've added
  # targeting and the ads are ready to serve.
  c.status = :PAUSED

  # Set the bidding strategy and budget.
  c.manual_cpc = client.resource.manual_cpc
  c.campaign_budget = return_budget.results.first.resource_name

  # Set the campaign network options.
  c.network_settings = client.resource.network_settings do |ns|
    ns.target_google_search = true
    ns.target_search_network = true
    # Enable Display Expansion on Search campaigns. See
    # https://support.google.com/google-ads/answer/7193800 to learn more.
    ns.target_content_network = true
    ns.target_partner_search_network = false
  end

  # Declare whether or not this campaign serves political ads targeting the EU.
  # Valid values are CONTAINS_EU_POLITICAL_ADVERTISING and
  # DOES_NOT_CONTAIN_EU_POLITICAL_ADVERTISING.
  c.contains_eu_political_advertising = :DOES_NOT_CONTAIN_EU_POLITICAL_ADVERTISING

  # Optional: Set the start date.
  c.start_date = DateTime.parse((Date.today + 1).to_s).strftime('%Y%m%d')

  # Optional: Set the end date.
  c.end_date = DateTime.parse((Date.today.next_year).to_s).strftime('%Y%m%d')
end
      

Perl

# Create a campaign.
my $campaign = Google::Ads::GoogleAds::V21::Resources::Campaign->new({
    name                   => "Interplanetary Cruise #" . uniqid(),
    advertisingChannelType => SEARCH,
    # Recommendation: Set the campaign to PAUSED when creating it to stop
    # the ads from immediately serving. Set to ENABLED once you've added
    # targeting and the ads are ready to serve.
    status => PAUSED,
    # Set the bidding strategy and budget.
    manualCpc      => Google::Ads::GoogleAds::V21::Common::ManualCpc->new(),
    campaignBudget => $campaign_budgets_response->{results}[0]{resourceName},
    # Set the campaign network options.
    networkSettings =>
      Google::Ads::GoogleAds::V21::Resources::NetworkSettings->new({
        targetGoogleSearch  => "true",
        targetSearchNetwork => "true",
        # Enable Display Expansion on Search campaigns. See
        # https://support.google.com/google-ads/answer/7193800 to learn more.
        targetContentNetwork       => "true",
        targetPartnerSearchNetwork => "false"
      }
      ),
    # Declare whether or not this campaign serves political ads targeting the EU.
    # Valid values are CONTAINS_EU_POLITICAL_ADVERTISING and
    # DOES_NOT_CONTAIN_EU_POLITICAL_ADVERTISING.
    containsEuPoliticalAdvertising =>
      DOES_NOT_CONTAIN_EU_POLITICAL_ADVERTISING,
    # Optional: Set the start date. The campaign starts tomorrow.
    startDate => strftime("%Y%m%d", localtime(time + 60 * 60 * 24)),
    # Optional: Set the end date. The campaign runs for 30 days.
    endDate => strftime("%Y%m%d", localtime(time + 60 * 60 * 24 * 30)),
  });
      

Chiến dịch hiện tại

Để thay thế ngân sách của một chiến dịch hiện có, trong CampaignOperation.update, hãy đặt trường campaign_budget của đối tượng Campaign thành tên tài nguyên của một ngân sách hiện có (cùng với mọi trường chiến dịch khác mà bạn có thể muốn đặt). Xin lưu ý rằng thao tác này sẽ thay thế ngân sách hiện tại được chỉ định cho chiến dịch bằng ngân sách do trường campaign_budget chỉ định, vì mỗi chiến dịch chỉ có thể được liên kết với một ngân sách tại một thời điểm.

Huỷ liên kết ngân sách với chiến dịch

Một chiến dịch phải luôn được liên kết với một ngân sách. Bạn có thể xoá một ngân sách khỏi chiến dịch bằng cách thay đổi ngân sách được liên kết với chiến dịch, từ đó thay thế ngân sách đó bằng một ngân sách khác. Để xác định chiến dịch bằng một ngân sách cụ thể, hãy chuyển sang phần tiếp theo.

Truy xuất các chiến dịch được chỉ định cho một ngân sách

Việc lấy danh sách các chiến dịch sử dụng cùng một ngân sách có thể giúp cân bằng mức sử dụng ngân sách. Truy vấn GAQL sau đây sẽ trả về tất cả chiến dịch cho mã ngân sách được chỉ định:

SELECT campaign.id
FROM campaign
WHERE campaign_budget.id = campaign_budget_id