Boş İleti Nesnelerini Alanlar Olarak Ayarlama

Google Ads API'de bazı mesaj alanları boş mesaj nesneleri olarak tanımlanır Örneğin campaign.manual_cpm, veya yalnızca ayarlanması gerekmeyen isteğe bağlı alanlara sahip olabilir (örneğin, campaign.manual_cpc. Bunları ayarlamak alanları, her bir dönüşüm hunisi için hangi teklif stratejisinin kullanılacağını API'ye Kampanya, ancak mesajlar boş olduğunda sezgisel değildir.

Dize olan campaign.name alanını güncellerken alanı Böylece, bunu normal bir Python nesne özelliği gibi doğrudan güncelleyebilirsiniz:

campaign.name = "Test campaign value"

campaign.manual_cpc, iç içe yerleştirilmiş bir alandır. Yani şunu içerir: başka bir protobuf mesajı görürsünüz. Siz alanını doğrudan güncelleyebilir:

campaign.manual_cpc.enhanced_cpc_enabled = True

Bu işlem API'ye bu Kampanyanın teklif stratejisinin manual_cpc olduğunu bildirir teklif verebilirsiniz.

Peki, boş olan manual_cpm öğesini kullanmak isterseniz ne olur? Veya manual_cpc geliştirilmiş mi? Bunu yapmak için, ayrı bir kodunu kampanyaya ekleyin. Ö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 öğesinin nasıl belirtildiğine dikkat edin:

name {
  value: "Test campaign value"
}
manual_cpm {
}

manual_cpm alanı ayarlanmış ancak hiçbirinde değer yok. Gönderilirken bu kalıbı kullanan API'ye isteği gönderirseniz, logging özelliğini etkinleştirerek ve gerekir.

Son olarak, bu alanı istek nesnesine manuel olarak update_mask Alan maskesi yardımcısının açıkça boş bir nesneye ayarlanmış bir alanla bir alan adı olacaktır.

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