Google Ads API'de bazı mesaj alanları campaign.manual_cpm
gibi boş mesaj nesneleri olarak tanımlanır veya campaign.manual_cpc
gibi yalnızca ayarlanması gerekmeyen isteğe bağlı alanlar içerebilir. Bu alanların ayarlanması, API'ye söz konusu Kampanya için hangi teklif stratejisinin kullanılacağını bildirmek açısından önemlidir, ancak mesajlar boş olduğunda bunu yapmak kolay bir işlem değildir.
Bir dize olan campaign.name
alanını güncellerken, alanı doğrudan normal bir Python nesne ö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 temel bir tür değil, başka bir protobuf mesajı içerir. Alanlarını da doğrudan güncelleyebilirsiniz:
campaign.manual_cpc.enhanced_cpc_enabled = True
Bu işlem, API'ye bu Kampanyanın geliştirilmiş TBM'nin etkin olduğu manual_cpc
tutarında bir teklif stratejisine sahip olduğunu bildirir.
Peki ya boş olan manual_cpm
öğesini kullanmak isterseniz? Veya geliştirilmiş TBM'yi etkinleştirmeden
manual_cpc
? 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)
campaign
nesnesi için manual_cpm
ifadesinin nasıl belirtildiğine dikkat edin:
name {
value: "Test campaign value"
}
manual_cpm {
}
manual_cpm
alanı ayarlandı ancak alanlarının hiçbirinde değer yok. Bu kalıbı kullanan API'ye istek gönderirken günlük kaydını etkinleştirip istek yükünü inceleyerek boş ileti 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ça boş bir nesneye ayarlanmış 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")