Trong API Google Ads, một số trường thông báo được dùng để cho biết lựa chọn về chiến lược đặt giá thầu cho một Chiến dịch. Đó có thể là:
- Thông báo thực sự trống: Ví dụ:
campaign.manual_cpmkhông có các trường con được xác định. - Thông báo có các trường không bắt buộc: Ví dụ:
campaign.manual_cpccó trường con không bắt buộc làenhanced_cpc_enabled.
Để cập nhật một trường nguyên thuỷ như campaign.name, bạn hãy đặt trực tiếp:
campaign.name = "Test campaign value"
Để cập nhật một thông báo lồng nhau có các trường phụ có thể đặt, chẳng hạn như campaign.manual_cpc khi bật CPC nâng cao, hãy đặt thông báo đó như sau:
campaign.manual_cpc.enhanced_cpc_enabled = True
Đặt tin nhắn hoàn toàn trống
Để sử dụng một chiến lược đặt giá thầu như manual_cpm, đây là một thông báo trống:
- Lấy một thực thể trống của loại thông báo (
ManualCpm). - Sử dụng
client.copy_fromđể chỉ định phiên bản trống này cho trường của chiến dịch. - Thêm tên trường (
manual_cpm) theo cách thủ công vàoupdate_masktrênCampaignOperation. Trình trợ giúp mặt nạ trường không thể tự động phát hiện rằng bạn đã đặt rõ ràng một thông báo trống.
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 {
# }
Đặt thông báo có các trường phụ không bắt buộc
Để sử dụng manual_cpc làm chiến lược đặt giá thầu mà không cần bật enhanced_cpc_enabled, bạn có thể thử một phương pháp tương tự như ManualCpm.
Tuy nhiên, vì ManualCpc có các trường con, nên việc thêm manual_cpc vào update_mask sẽ dẫn đến lỗi FieldMaskError.FIELD_HAS_SUBFIELDS. API này yêu cầu độ cụ thể cao hơn khi một thông báo trong mặt nạ có các trường con.
Để đặt campaign.manual_cpc một cách chính xác trong khi vẫn đảm bảo enhanced_cpc_enabled không được đặt:
- Tạo một thực thể đối tượng
ManualCpctrống và chỉ định đối tượng đó chocampaign.manual_cpc. - Thêm đường dẫn vào từng trường con có thể thay đổi của
ManualCpcvàoupdate_masktrênCampaignOperation. Trong trường hợp này, trường con có liên quan là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.
Khi gửi yêu cầu bằng các mẫu này, bạn có thể xác minh tải trọng bằng cách bật tính năng ghi nhật ký và kiểm tra yêu cầu.