Google Ads API'de bazı mesaj alanları campaign.manual_cpm
gibi boş mesaj nesneleri olarak tanımlanır veya yalnızca ayarlanması gerekmeyen campaign.manual_cpc
gibi isteğe bağlı alanlara sahip olabilir. Bu alanların ayarlanması, API'ya belirli bir Kampanya için hangi teklif stratejisinin kullanılacağını belirtmesi önemlidir, ancak iletiler boş olduğunda sezgisel bir seçim olmaz.
Bir dize olan campaign.name
alanını güncellerken, alanı normal bir Python nesne özelliğiymiş gibi doğrudan güncelleyerek ayarlarız:
campaign.name = "Test campaign value"
campaign.manual_cpc
, iç içe geçmiş bir alandır. Yani bir dize gibi temel bir tür değil, başka bir protobuf mesajı içerir. Müşterinin alanlarını da doğrudan güncelleyebilirsiniz:
campaign.manual_cpc.enhanced_cpc_enabled = True
Bu sayede API'ye, bu kampanyada geliştirilmiş TBM'nin etkin olduğu bir manual_cpc
teklif stratejisi olduğunu bildirirsiniz.
Peki, manual_cpm
ürününü kullanmak istiyorsanız ne olur? Ya da manual_cpc
Geliştirilmiş TBM'yi etkinleştirmeden mi? Bunu yapmak için sınıfın ayrı, boş bir örneğini kampanyaya kopyalamanız gerekir. Örneğin:
client = GoogleAdsClient.load_from_storage()
empty_cpm = client.get_type('ManualCpm')
client.copy_from(campaign.manual_cpm, empty_cpm)
manual_cpm
öğesinin campaign
nesnesi için nasıl belirtildiğine dikkat edin:
name {
value: "Test campaign value"
}
manual_cpm {
}
manual_cpm
alanı ayarlandı ancak hiçbir alanında değer yok. Bu kalıbı kullanan API'ye istek gönderirken günlük kaydını etkinleştirerek ve istek yükünü inceleyerek boş mesaj nesnesini doğru şekilde ayarladığınızı doğrulayabilirsiniz.
Son olarak, bu alanı istek nesnesinin update_mask
öğesine manuel olarak eklemeniz gerekir. Alan maskesi yardımcısının, açık bir şekilde boş bir nesneye ayarlanan bir alan ile ayarlanmamış bir alan arasındaki farkı belirleyecek bir mekanizması yoktur.
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")