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