Google Ads API'de bazı mesaj alanları boş mesaj nesneleri olarak tanımlanır (ör. campaign.manual_cpm
) veya yalnızca ayarlanması gerekmeyen isteğe bağlı alanlara sahip olabilir (ör. campaign.manual_cpc
).
Bu alanları ayarlamak, API'ye belirli bir kampanya için hangi teklif stratejisinin kullanılacağını bildirmek açısından önemlidir ancak mesajlar boş olduğunda bu işlem sezgisel değildir.
Dize olan campaign.name
alanını güncellerken, alanı doğrudan normal bir Python nesnesi özelliğiymiş gibi güncelleyerek ayarlarız:
campaign.name = "Test campaign value"
campaign.manual_cpc
iç içe yerleştirilmiş bir alandır. Diğer bir deyişle, dize gibi basit bir tür değil, başka bir protobuf mesajı içerir. Alanlarını doğrudan da güncelleyebilirsiniz:
campaign.manual_cpc.enhanced_cpc_enabled = True
Bu, API'ye bu kampanyanın, geliştirilmiş TBM'nin etkin olduğu manual_cpc
teklif stratejisine sahip olduğunu bildirir.
Ancak boş olan manual_cpm
değerini kullanmak isterseniz ne olur? Yoksa manual_cpc
Gelişmiş TBM'yi etkinleştirmeden mi? Bunu yapmak için sınıfın ayrı bir boş ö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)
campaign
nesnesi için manual_cpm
'in nasıl belirtildiğine dikkat edin:
name {
value: "Test campaign value"
}
manual_cpm {
}
manual_cpm
alanı ayarlanmış ancak alanlarının hiçbirinde değer yok. Bu kalıbı kullanan API'ye istek gönderirken günlüğe kaydetme özelliğini etkinleştirip istek yükünü inceleyerek boş mesaj nesnesini doğru şekilde ayarladığınızdan emin olabilirsiniz.
Son olarak, bu alanı istek nesnesinin update_mask
alanına manuel olarak eklemeniz gerekir. Alan maskesi yardımcısı, açıkça boş bir nesneye ayarlanmış bir alan ile ayarlanmamış bir alan arasındaki farkı belirleyecek bir mekanizmaya sahip değildir.
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")