W interfejsie Google Ads API niektóre pola wiadomości są zdefiniowane jako puste obiekty wiadomości.
na przykład campaign.manual_cpm
,
lub mogą zawierać tylko pola opcjonalne, których nie trzeba ustawiać, na przykład
campaign.manual_cpc
Ustawiam te opcje
jest ważne, aby wskazać interfejsowi API, którą strategię ustalania stawek zastosować w przypadku danego
Kampania, ale nie jest to intuicyjne, gdy komunikaty są puste.
Podczas aktualizowania pola campaign.name
, które jest ciągiem znaków, ustawiamy pole
przez zaktualizowanie go bezpośrednio w taki sposób, jakby był to zwykły atrybut obiektu Python:
campaign.name = "Test campaign value"
campaign.manual_cpc
jest polem zagnieżdżonym, czyli zawiera
inny komunikat buforowania, a nie typ podstawowy, np. ciąg znaków. Ty
może również bezpośrednio aktualizować swoje pola:
campaign.manual_cpc.enhanced_cpc_enabled = True
Informuje to interfejs API, że strategia ustalania stawek w tej kampanii to manual_cpc
z włączonym Ulepszonym CPC.
A jeśli chcesz użyć kolumny manual_cpm
, która jest pusta? lub manual_cpc
bez włączania Ulepszonego CPC? Aby to zrobić, musisz skopiować osobny
puste wystąpienie klasy w kampanii, np.:
client = GoogleAdsClient.load_from_storage()
empty_cpm = client.get_type('ManualCpm')
client.copy_from(campaign.manual_cpm, empty_cpm)
Zwróć uwagę na sposób określania pola manual_cpm
dla obiektu campaign
:
name {
value: "Test campaign value"
}
manual_cpm {
}
Pole manual_cpm
jest ustawione, ale żadne z jego pól nie ma wartości. Podczas wysyłania
do interfejsu API korzystającego z tego wzorca, możesz sprawdzić, czy ustawiasz
prawidłowo pusty obiekt wiadomości, włączając logging i sprawdzając
ładunku żądania.
Na koniec musisz ręcznie dodać to pole do
update_mask
Asystent maski pola nie ma mechanizmu do określania
różnicę między polem, które zostało jawnie ustawione na pusty obiekt, a wartością
które nie zostało ustawione.
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")