Buscar referências a todas as várias classes proto necessárias para usar a API em Python pode ser detalhado e exige que você tenha uma compreensão intrínseca da API ou que mude de contexto com frequência para consultar os protos ou a documentação.
Os métodos get_service e get_type do cliente
Esses dois métodos getter permitem recuperar qualquer objeto de serviço ou tipo na
API. O método get_service é usado para recuperar clientes de serviço. get_type é usado para qualquer outro objeto. As classes de cliente de serviço são definidas no código
no caminho da versão google/ads/googleads/v*/services/services/, e todos os
tipos são definidos nas várias categorias de objetos,
google/ads/googleads/v*/common|enums|errors|resources|services/types/.
Todo o código abaixo do diretório de versão é gerado. Portanto, é recomendável usar esses métodos em vez de importar os objetos diretamente, caso a estrutura do codebase mude.
Confira um exemplo de como usar o método get_service para recuperar uma instância do cliente GoogleAdsService.
from google.ads.googleads.client import GoogleAdsClient
# "load_from_storage" loads your API credentials from disk so they
# can be used for service initialization. Providing the optional `version`
# parameter means that the v23 version of GoogleAdsService will
# be returned.
client = GoogleAdsClient.load_from_storage(version="v23")
googleads_service = client.get_service("GoogleAdsService")
Confira um exemplo de como usar o método get_type para recuperar uma instância Campaign.
from google.ads.googleads.client import GoogleAdsClient
client = GoogleAdsClient.load_from_storage(version="v23")
campaign = client.get_type("Campaign")
Tipos enumerados
Embora seja possível usar o método get_type para recuperar enums, cada instância de GoogleAdsClient também tem um atributo enums que carrega enums dinamicamente usando o mesmo mecanismo do método get_type. Essa interface
é mais simples e fácil de ler do que usar get_type:
client = GoogleAdsClient.load_from_storage(version=v23)
campaign = client.get_type("Campaign")
campaign.status = client.enums.CampaignStatusEnum.PAUSED
Os campos de objetos proto que são enums são representados em Python pelo tipo nativo
enum. Isso significa que você
pode ler facilmente o valor do membro. Trabalhar com a instância campaign
do exemplo anterior em um repl do Python:
>>> print(campaign.status)
CampaignStatus.PAUSED
>>> type(campaign.status)
<enum 'CampaignStatus'>
>>> print(campaign.status.value)
3
Às vezes, é útil saber o nome do campo que corresponde ao valor do
enum, conforme mostrado acima. Você pode acessar essas informações usando o atributo name:
>>> print(campaign.status.name)
'PAUSED'
>>> type(campaign.status.name)
<class 'str'>
A interação com enums é diferente dependendo se você tem a configuração
use_proto_plus
definida como true ou false. Para detalhes sobre as duas interfaces, consulte
a documentação de mensagens do protobuf.
Controle de versões
Várias versões da API são mantidas ao mesmo tempo. Embora
v23 seja a versão mais recente, as anteriores ainda estão
acessíveis até serem desativadas. A biblioteca vai incluir classes de mensagens proto separadas que correspondem a cada versão ativa da API. Para acessar uma classe de mensagem de uma versão específica, forneça o parâmetro de palavra-chave version ao inicializar um cliente para que ele sempre retorne a instância dessa versão:
client = GoogleAdsService.load_from_storage(version="/google-ads/api/reference/rpc/v23/")
# The Campaign instance will be from the v23 version of the API.
campaign = client.get_type("Campaign")
Também é possível especificar a versão ao chamar os métodos get_service e
get_type. Isso vai substituir a versão fornecida ao
inicializar o cliente:
client = GoogleAdsService.load_from_storage()
# This will load the v23 version of the GoogleAdsService.
googleads_service = client.get_service(
"GoogleAdsService", version="v23")
client = GoogleAdsService.load_from_storage(version="v23")
# This will load the v21 version of a Campaign.
campaign = client.get_type("Campaign", version="v21")
Se nenhum parâmetro de palavra-chave version for fornecido, a biblioteca usará a versão mais recente por padrão. Uma lista atualizada das versões mais recentes e de outras disponíveis pode ser encontrada na seção de navegação à esquerda da documentação de referência da API.