Trong API Google Ads, một số trường thông báo được dùng để cho biết lựa chọn
chiến lược đặt giá thầu cho Campaign.
Đó có thể là:
- Thông báo thực sự trống: Ví dụ:
campaign.manual_cpmkhông có trường con nào được xác định. - Thông báo có các trường tuỳ chọn: Ví dụ:
campaign.manual_cpccó trường con tuỳ chọnenhanced_cpc_enabled.
Xin lưu ý rằng các trường chiến lược đặt giá thầu trên Campaign thuộc
về nhóm bidding_strategy oneof. Việc đặt một chiến lược đặt giá thầu mới, chẳng hạn như manual_cpm hoặc manual_cpc, sẽ ngầm xoá mọi chiến lược đặt giá thầu đã định cấu hình trước đó trong nhóm oneof đó.
Để cập nhật một trường nguyên thuỷ như
campaign.name, bạn hãy đặt trường đó 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 con có thể đặt, chẳng hạn như campaign.manual_cpc khi bật tính năng CPC nâng cao, hãy đặt thông báo đó như sau:
campaign.manual_cpc.enhanced_cpc_enabled = True
Đặt thông báo thực sự trống
Cách sử dụng chiến lược đặt giá thầu như manual_cpm (là một thông báo trống
):
- Tạo một thực thể trống của loại thông báo (
ManualCpm). - Sử dụng
client.copy_fromđể chỉ định thực thể trống này cho trường của chiến dịch. - Thủ công thêm tên trường (
manual_cpm) 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 một thông báo trống đã được đặt một cách rõ ràng.
from google.ads.googleads import util
from google.ads.googleads.client import GoogleAdsClient
from google.api_core.protobuf_helpers import field_mask
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. Create the operation and manually add "manual_cpm" to the update_mask.
campaign_operation = client.get_type("CampaignOperation")
client.copy_from(campaign_operation.update, campaign)
client.copy_from(
campaign_operation.update_mask,
field_mask(None, util.convert_proto_plus_to_protobuf(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 con không bắt buộc
Để sử dụng manual_cpc làm chiến lược đặt giá thầu mà không 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 yêu cầu tính cụ thể hơn khi một thông báo trong mặt nạ có các trường con.
Cách đặ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 thực thể một đối tượng
ManualCpctrống và sao chép đối tượng đó vàocampaign.manual_cpcbằng cách sử dụngclient.copy_from. - Thủ công thêm đường dẫn đến 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.
from google.ads.googleads import util
from google.ads.googleads.client import GoogleAdsClient
from google.api_core.protobuf_helpers import field_mask
client = GoogleAdsClient.load_from_storage()
# Assume 'campaign' is an existing Campaign object you are updating.
# 1. Copy an empty ManualCpc object into campaign.manual_cpc.
client.copy_from(campaign.manual_cpc, client.get_type("ManualCpc"))
# 2. Manually add the subfield path to the update_mask.
campaign_operation = client.get_type("CampaignOperation")
client.copy_from(campaign_operation.update, campaign)
client.copy_from(
campaign_operation.update_mask,
field_mask(None, util.convert_proto_plus_to_protobuf(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.