빈 메시지 객체를 필드로 설정

Google Ads API에서 일부 메시지 필드는 캠페인입찰 전략 선택을 나타내는 데 사용됩니다. 여기에는 다음이 포함됩니다.

campaign.name과 같은 기본 필드를 업데이트하려면 직접 설정합니다.

campaign.name = "Test campaign value"

향상된 CPC를 사용 설정할 때와 같이 설정 가능한 하위 필드가 있는 중첩된 메시지를 업데이트하려면 다음과 같이 설정하세요.campaign.manual_cpc

campaign.manual_cpc.enhanced_cpc_enabled = True

완전히 빈 메시지 설정

빈 메시지인 manual_cpm과 같은 입찰 전략을 사용하려면 다음 단계를 따르세요.

  1. 메시지 유형(ManualCpm)의 빈 인스턴스를 가져옵니다.
  2. client.copy_from를 사용하여 이 빈 인스턴스를 캠페인의 필드에 할당합니다.
  3. CampaignOperation에서 update_mask에 필드 이름 (manual_cpm)을 수동으로 추가합니다. 필드 마스크 도우미는 빈 메시지가 명시적으로 설정되었음을 자동으로 감지할 수 없습니다.
client = GoogleAdsClient.load_from_storage()
# Assume 'campaign' is an existing Campaign object you are updating.

# 1. Get an empty ManualCpm type
empty_cpm = client.get_type('ManualCpm')
# 2. Copy it to the campaign's manual_cpm field
client.copy_from(campaign.manual_cpm, empty_cpm)

# 3. Manually add "manual_cpm" to the update_mask.
from google.api_core.protobuf_helpers import field_mask
campaign_operation = client.get_type('CampaignOperation')
campaign_operation.update = campaign
campaign_operation.update_mask = field_mask(None, campaign)
campaign_operation.update_mask.paths.append("manual_cpm")

# The resulting proto sent to the API will include:
# manual_cpm {
# }

선택적 하위 필드가 있는 메시지 설정

enhanced_cpc_enabled을 사용 설정하지 않고 manual_cpc을 입찰 전략으로 사용하려면 ManualCpm과 유사한 접근 방식을 시도해 보세요. 하지만 ManualCpc에는 하위 필드가 있으므로 manual_cpcupdate_mask에 추가하면 FieldMaskError.FIELD_HAS_SUBFIELDS 오류가 발생합니다. 마스크의 메시지에 하위 필드가 있는 경우 API에는 더 구체적인 정보가 필요합니다.

enhanced_cpc_enabled이 설정되지 않은 상태로 유지되도록 하면서 campaign.manual_cpc을 올바르게 설정하려면 다음을 실행하세요.

  1. ManualCpc 객체를 인스턴스화하고 campaign.manual_cpc에 할당합니다.
  2. ManualCpc의 변경 가능한 각 하위 필드의 경로를 CampaignOperationupdate_mask에 수동으로 추가합니다. 이 경우 관련 하위 필드는 enhanced_cpc_enabled입니다.
client = GoogleAdsClient.load_from_storage()
# Assume 'campaign' is an existing Campaign object you are updating.

# 1. Instantiate and assign an empty ManualCpc
campaign.manual_cpc = client.get_type('ManualCpc')

# 2. Manually add the subfield path to the update_mask.
from google.api_core.protobuf_helpers import field_mask
campaign_operation = client.get_type('CampaignOperation')
campaign_operation.update = campaign
campaign_operation.update_mask = field_mask(None, campaign)

# For ManualCpc, because it has subfields, you MUST specify the subfield
# path in the update_mask. This tells the API you are updating something
# within manual_cpc. By not setting enhanced_cpc_enabled on the campaign
# object, it defaults to false.
campaign_operation.update_mask.paths.append("manual_cpc.enhanced_cpc_enabled")

# The update_mask paths will include: ['manual_cpc.enhanced_cpc_enabled']
# This correctly signals to the API that ManualCpc is the chosen strategy,
# with enhanced_cpc_enabled in its default state.

이러한 패턴을 사용하여 요청을 전송할 때 로깅을 사용 설정하고 요청을 검사하여 페이로드를 확인할 수 있습니다.