4.4 캠페인 관리

소개


캠페인을 만든 후에 판매자가 캠페인을 변경할 수 있도록 하는 것이 중요합니다. 변경할 수 있어야 하는 가장 중요한 측면은 다음과 같습니다.

  • 예산
  • 상태 (일시중지, 사용, 삭제)
  • 지역 타겟팅 (권장되지만 선택사항)
  • 캠페인 생성 인터페이스에 포함한 기타 필드

UX 안내


캠페인 실적 보고의 일부로 개요 페이지와 별도의 페이지에 캠페인 목록을 표시합니다. 사용자가 캠페인을 일시중지, 삭제, 수정할 수 있습니다.

pmax_campaign

캠페인을 수정하면 판매자가 캠페인을 만드는 동안 입력한 것과 동일한 필드를 수정할 수 있습니다. 아래 예를 참고하세요.

edit_pmax

기술 가이드


소매업체를 위한 실적 최대화 캠페인을 만든 후 다음과 같은 캠페인 설정을 변경할 수 있습니다.

  • 캠페인 이름
  • 캠페인 예산
  • 캠페인 상태
  • 캠페인 타겟팅 기준

개발자 가이드에서 리소스를 변경하는 방법에 관한 자세한 개요를 확인할 수 있습니다. 노출된 서비스 엔드포인트를 사용하여 특정 리소스를 변형하거나 (예: CampaignService.MutateCampaigns) GoogleAdsService.Mutate 엔드포인트를 통해 사용 가능한 일괄 변형 기능을 사용하여 여러 리소스 간에 변형할 수 있습니다.

가능하면 일괄 변형을 통해 캠페인을 업데이트하는 데 필요한 작업 수를 줄이는 것이 좋습니다. 이 점을 염두에 두고 개별 리소스 엔드포인트 대신 GoogleAdsService.Mutate 엔드포인트를 사용하도록 아키텍처를 설계해야 합니다. 이렇게 하면 향후 기능을 더 쉽게 확장할 수도 있습니다.

이후 예에서는 로컬 데이터베이스에 관련 ID가 이미 저장되어 있다고 가정합니다.

캠페인 이름

캠페인의 이름을 업데이트하려면 Campaign.name 필드를 변경해야 합니다.

null (코드 포인트 0x0), NL 라인 피드 (코드 포인트 0xA) 또는 캐리지 리턴 (코드 포인트 0xD) 문자를 포함해서는 안 됩니다.

캠페인 예산

기존 예산을 새 예산으로 대체하는 대신 업데이트하는 것이 좋습니다. 이렇게 하면 캠페인이 예상대로 지출되고 초과 게재로 이어지지 않습니다.

예산 값만 업데이트하고 다른 필드를 변경하면 안 되며 일일 지출 값을 높여야 합니다.

Python
budget_resource_name = client.get_service(
        "CampaignBudgetService"
    ).campaign_budget_path(customer_id, budget_id)

mutate_operation = client.get_type("MutateOperation")
campaign_budget = mutate_operation.campaign_budget_operation.update

campaign_budget.resource_name = budget_resource_name

# update the budget amount to the new value

campaign_budget.amount_micros = 50000000

client.copy_from(
    mutate_operation.campaign_budget_operation.update_mask,
    protobuf_helpers.field_mask(None, campaign_budget._pb),
)
return mutate_operation

캠페인 상태

캠페인의 상태 (사용 설정/일시중지/삭제)를 업데이트하려면 Campaign.status 필드를 변경하고 CampaignStatus enum에서 관련 상태를 할당해야 합니다.

캠페인 업데이트의 샘플 코드에서 캠페인 상태 변경의 예를 확인할 수 있습니다.

캠페인 기준

캠페인 기준을 업데이트할 때는 사용자에게 노출되는 기준을 업데이트하는 기능만 제공하면 됩니다. 이는 최소한 지역 타겟팅과 잠재적인 언어 타겟팅입니다. 캠페인 기준 입찰가 조정 업데이트의 샘플 코드에서 캠페인 기준을 업데이트하는 예를 확인할 수 있습니다.

지역 타겟팅 기준을 업데이트하려면 CampaignCriterion.location를 새 지역 타겟 상수 값으로 업데이트합니다.

Python
criterion_rname = client.get_service(
    "CampaignCriterionService"
    ).campaign_criterion_path(
    customer_id, campaign_id, criterion_id
)

mutate_operation = client.get_type("MutateOperation")
campaign_criterion = mutate_operation.campaign_criterion_operation.update

campaign_criterion.resource_name = criterion_rname

# Set the geo to the update geo targeting

campaign_criterion.location.geo_target_constant = (
   geo_target_constant_service.geo_target_constant_path("1022762")
) # Brooklyn

client.copy_from(
    mutate_operation.campaign_criterion_operation.update_mask,
    protobuf_helpers.field_mask(None, campaign_criterion._pb),
)
return mutate_operation

언어 타겟팅 기준을 업데이트하려면 CampaignCriterion.language 값의 값을 새 언어 상수로 업데이트해야 합니다.

Python
campaign_criterion_service = client.get_service("CampaignCriterionService")

criterion_rname = campaign_criterion_service.campaign_criterion_path(
   customer_id, campaign_id, criterion_id
)

mutate_operation = client.get_type("MutateOperation")
campaign_criterion = mutate_operation.campaign_criterion_operation.update

campaign_criterion.resource_name = criterion_rname

# Set the language to the updated language
# For a list of all language codes, see:
# https://developers.google.com/google-ads/api/data/codes-formats#languages
campaign_criterion.language.language_constant = (
    googleads_service.language_constant_path("1000")
)  # English

client.copy_from(
    mutate_operation.campaign_criterion_operation.update_mask,
    protobuf_helpers.field_mask(None, campaign_criterion._pb),
)
return mutate_operation