Boş İleti Nesnelerini Alanlar Olarak Ayarlama

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")