Boş İleti Nesnelerini Alanlar Olarak Ayarlama

Google Ads API'de bazı mesaj alanları boş mesaj nesneleri (ör. campaign.manual_cpm) olarak tanımlanır veya yalnızca ayarlanması gerekmeyen isteğe bağlı alanlar (ör. campaign.manual_cpc) içerebilir. 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")