在 Google Ads API 中,某些消息字段定义为空消息对象,
例如 campaign.manual_cpm
,
或者可能只有不需要设置的选填字段
campaign.manual_cpc
。设置这些内容
字段非常重要,它可以告诉 API 要针对指定的
广告系列,但当消息为空时,不直观。
在更新字符串形式的 campaign.name
字段时,我们需要设置该字段
像普通 Python 对象属性一样直接进行更新:
campaign.name = "Test campaign value"
campaign.manual_cpc
是一个嵌套字段,这意味着它包含
另一 protobuf 消息,而不是字符串等基元类型。您
也可以直接更新其字段:
campaign.manual_cpc.enhanced_cpc_enabled = True
这将告知 API 此广告系列的出价策略为 manual_cpc
(已启用智能点击付费)。
但是,如果您想使用空的 manual_cpm
,该怎么办?或manual_cpc
而不启用智能点击付费?为此,您需要
类的空实例添加到广告系列中,例如:
client = GoogleAdsClient.load_from_storage()
empty_cpm = client.get_type('ManualCpm')
client.copy_from(campaign.manual_cpm, empty_cpm)
请注意如何为 campaign
对象指定 manual_cpm
:
name {
value: "Test campaign value"
}
manual_cpm {
}
已设置 manual_cpm
字段,但其所有字段都没有值。发送时
向使用此模式的 API 发送请求,您可以验证是否设置了
您可以启用日志记录并检查
请求载荷。
最后,您需要将此字段手动添加到请求对象的
update_mask
。字段掩码帮助程序没有用于确定
明确设置为空对象的字段与
字段。
from google.api_core.protobuf_helpers import field_mask
campaign_operation.create = campaign
campaign_operation.update_mask = field_mask(None, campaign)
# Here we manually add the "manual_cpm" field
campaign_operation.update_mask.append("manual_cpm")