Définir des objets de message vides en tant que champs

Restez organisé à l'aide des collections Enregistrez et classez les contenus selon vos préférences.

Dans l'API Google Ads, certains champs de message sont définis comme des objets de message vides, tels que campaign.manual_cpm, ou ne comportent que des champs facultatifs qui n'ont pas besoin d'être définis, par exemple campaign.manual_cpc. Il est important de définir ces champs pour indiquer à l'API quelle stratégie d'enchères utiliser pour la campagne donnée, mais elle n'est pas intuitive lorsque les messages sont vides.

Lors de la mise à jour du champ campaign.name, qui est une chaîne, nous définissons le champ en le mettant à jour directement comme s'il s'agissait d'un attribut d'objet Python normal:

campaign.name = "Test campaign value"

campaign.manual_cpc est un champ imbriqué, ce qui signifie qu'il contient un autre message protobuf et non un type primitif, comme une chaîne. Vous pouvez également mettre à jour ses champs directement:

campaign.manual_cpc.enhanced_cpc_enabled = True

L'API est informée que cette campagne utilise une stratégie d'enchères manual_cpc avec l'Optimiseur de CPC activé.

Mais que faire si vous voulez utiliser manual_cpm, qui est vide ? Ou manual_cpc sans activer l'Optimiseur de CPC ? Pour ce faire, vous devez copier une instance vide de la classe dans la campagne. Par exemple:

client = GoogleAdsClient.load_from_storage()

empty_cpm = client.get_type('ManualCpm')
client.copy_from(campaign.manual_cpm, empty_cpm)

Notez que manual_cpm est spécifié pour l'objet campaign:

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

Le champ manual_cpm est défini, mais aucun de ses champs ne contient de valeurs. Lorsque vous envoyez une requête à l'API qui utilise ce modèle, vous pouvez vérifier que vous définissez correctement l'objet message vide en activant la journalisation et en inspectant la charge utile de la requête.