캠페인 예산 할당

캠페인에 예산을 할당하거나, 캠페인에서 예산을 분리하거나, 특정 예산에 할당된 캠페인을 검색할 수 있습니다.

캠페인에 예산 할당

CampaignBudgetService로 을 만들거나 기존 CampaignBudget을 식별한 후 CampaignService 호출에서 resource_name 필드 값을 사용합니다. 별도의 요청에서 예산 생성 작업이 성공했지만 후속 캠페인 할당이 실패하면 고아 예산 (캠페인과 연결되지 않은 예산)이 발생합니다. GoogleAdsService.Mutate 요청 하나에서 CampaignBudget (임시 리소스 ID 사용)와 Campaign을 원자적으로 생성하거나 사용하지 않는 예산을 재사용하거나 삭제하여 고아 예산을 방지할 수 있습니다.

새 캠페인

새 캠페인의 경우 CampaignOperation.create에서 Campaign 객체의 campaign_budget 필드를 예산 리소스 이름으로 설정합니다(다음 코드 예 참고).

자바

// 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.
        .setStartDateTime(new DateTime().plusDays(1).toString("yyyy-MM-dd 00:00:00"))
        .setEndDateTime(new DateTime().plusDays(30).toString("yyyy-MM-dd 23:59:59"))
        .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.
    StartDateTime = DateTime.Now.AddDays(1).ToString("yyyyMMdd 00:00:00"),

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

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_time' => date('Y-m-d 00:00:00', strtotime('+1 day')),
    'end_date_time' => date('Y-m-d 23:59:59', 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_time = datetime.date.strftime(
    start_time, _START_DATE_FORMAT
)

# Optional: Set the end date.
end_time: datetime.date = start_time + datetime.timedelta(weeks=4)
campaign.end_date_time = datetime.date.strftime(end_time, _END_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_time = DateTime.parse((Date.today + 1).to_s).strftime('%Y%m%d %H:%M:%S')

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

Perl

# Create a campaign.
my $campaign = Google::Ads::GoogleAds::V25::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::V25::Common::ManualCpc->new(),
    campaignBudget => $campaign_budgets_response->{results}[0]{resourceName},
    # Set the campaign network options.
    networkSettings =>
      Google::Ads::GoogleAds::V25::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 datetime. The campaign starts tomorrow.
    startDateTime =>
      strftime("%Y%m%d 00:00:00", localtime(time + 60 * 60 * 24)),
    # Optional: Set the end datetime. The campaign runs for 30 days.
    endDateTime =>
      strftime("%Y%m%d 23:59:59", localtime(time + 60 * 60 * 24 * 30)),
  });
      

curl

기존 캠페인

기존 캠페인의 예산을 바꾸려면 CampaignOperation.update에서 Campaign 객체의 campaign_budget 필드를 기존 예산의 리소스 이름으로 설정합니다 (설정하려는 다른 캠페인 필드와 함께). 캠페인은 한 번에 하나의 예산과만 연결될 수 있으므로 이렇게 하면 캠페인에 할당된 기존 예산이 campaign_budget 필드에 지정된 예산으로 대체됩니다.

캠페인에서 예산 연결 해제

캠페인은 항상 예산과 연결되어야 합니다. 캠페인과 연결된 예산을 변경하여 캠페인에서 예산을 삭제할 수 있으며, 이렇게 하면 다른 예산으로 대체됩니다. 특정 예산을 사용하는 캠페인을 식별하려면 다음 섹션을 참고하세요.

예산에 할당된 캠페인 가져오기

동일한 예산을 사용하는 캠페인 목록을 가져오면 예산 사용률을 균형 있게 조정하는 데 도움이 됩니다. 다음 GAQL 쿼리는 지정된 예산 ID의 모든 캠페인을 반환합니다.

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