

# Conexão com o Google Ads
<a name="connecting-to-googleads"></a>

 A API do Google Ads é a interface programática do Google Ads, usada para gerenciar contas e campanhas grandes ou complexas do Google Ads. Se você for um usuário do Google Ads, poderá conectar o AWS Glue à sua conta do Google Ads. Em seguida, será possível usar o Google Ads como fonte de dados nos seus trabalhos de ETL. Execute esses trabalhos para transferir dados entre o Google Ads e serviços da AWS ou outras aplicações com suporte. 

**Topics**
+ [Compatibilidade do AWS Glue com o Google Ads](googleads-support.md)
+ [Políticas que contêm as operações de API para criar e usar conexões](googleads-configuring-iam-permissions.md)
+ [Configurar o Google Ads](googleads-configuring.md)
+ [Configuração de conexões do Google Ads](googleads-configuring-connections.md)
+ [Leitura de entidades do Google Ads](googleads-reading-from-entities.md)
+ [Opções de conexão do Google Ads](googleads-connection-options.md)
+ [Criar uma conta do Google Ads](googleads-create-account.md)
+ [Limitações](googleads-connector-limitations.md)

# Compatibilidade do AWS Glue com o Google Ads
<a name="googleads-support"></a>

O AWS Glue é compatível com o Google Ads da seguinte maneira:

**Compatível como fonte?**  
Sim. Você pode usar trabalhos de ETL do AWS Glue para consultar dados no Google Ads.

**Compatível como destino?**  
Não.

**Versões da API do Google Ads compatíveis**  
v18

# Políticas que contêm as operações de API para criar e usar conexões
<a name="googleads-configuring-iam-permissions"></a>

 O exemplo de política a seguir descreve as permissões da AWS necessárias para criar e usar conexões. Se você estiver criando um novo perfil, crie uma política que contenha o seguinte: 

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "glue:ListConnectionTypes",
        "glue:DescribeConnectionType",
        "glue:RefreshOAuth2Tokens",
        "glue:ListEntities",
        "glue:DescribeEntity"
      ],
      "Resource": "*"
    }
  ]
}
```

------

É possível usar as seguintes políticas gerenciadas do IAM para permitir acesso:
+  [AWSGlueServiceRole](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AWSGlueServiceRole): concede acesso a recursos que vários processos do AWS Glue exigem para serem executados em seu nome. Esses recursos incluem o AWS Glue, Amazon S3, IAM, CloudWatch Logs e Amazon EC2. Se você seguir a convenção de nomenclatura para os recursos especificados nesta política, os processos do AWS Glue terão as permissões necessárias. Esta política geralmente é anexada a funções especificadas durante a definição de crawlers, trabalhos e endpoints de desenvolvimento. 
+  [AWSGlueConsoleFullAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AWSGlueConsoleFullAccess): concede acesso total aos recursos do AWS Glue quando uma identidade à qual a política está anexada usa o Console de Gerenciamento da AWS. Se você seguir a convenção de nomenclatura para os recursos especificados nesta política, os usuários poderão acessar todos os recursos do console. Esta política geralmente é anexada aos usuários do console do AWS Glue. 

# Configurar o Google Ads
<a name="googleads-configuring"></a>

Para usar o AWS Glue para transferir dados do Goggle Ads, os seguintes requisitos deverão ser atendidos:

## Requisitos mínimos
<a name="googleads-configuring-min-requirements"></a>
+  É necessário ter uma conta do Google Ads com e-mail e senha. Para obter mais informações sobre como criar uma conta, consulte [Criar de uma conta no Google Ads](googleads-create-account.md). 
+  A conta do Google Ads está habilitada para acesso de API. Todo o uso da API do Google Ads está disponível sem custo adicional. 
+  A conta do Google Ads permite a instalação de aplicações conectadas. Caso não tenha acesso a essa funcionalidade, entre em contato com seu administrador do Google Ads. 

 Caso atenda a esses requisitos, você poderá conectar o AWS Glue à conta do Google Ads. 

# Configuração de conexões do Google Ads
<a name="googleads-configuring-connections"></a>

 O Google Ads oferece suporte ao tipo de concessão `AUTHORIZATION_CODE` para OAuth2. 

 Esse tipo de concessão é considerado um OAuth de “três pernas”, pois conta com o redirecionamento dos usuários para o servidor de autorização de terceiros para autenticar o usuário. Ele é usado na criação de conexões por meio do Console do AWS Glue. O console do AWS Glue redirecionará o usuário para o Google Ads, onde ele deverá fazer login e dar autorização para que as permissões solicitadas pelo AWS Glue acessem a instância do Google Ads. 

 Os usuários podem optar por criar sua própria aplicação conectada no Google Ads e fornecer seus próprios ID e segredo do cliente ao criar conexões por meio do console do AWS Glue. Nesse cenário, eles ainda serão redirecionados para o Google Ads para fazer login e autorizar o acesso do AWS Glue aos recursos. 

 Esse tipo de concessão resulta em um token de atualização e um token de acesso. O token de acesso tem vida curta e pode ser atualizado automaticamente sem a interação do usuário usando o token de atualização. 

 Para obter mais informações, consulte a [documentação pública do Google Ads sobre a criação de uma aplicação conectada para o fluxo de código de autorização do OAuth](https://developers.google.com/workspace/guides/create-credentials). 

Para configurar uma conexão com o Google Ads:

1.  No AWS Secrets Manager, crie um segredo com os detalhes a seguir. É necessário criar um segredo para cada conexão no AWS Glue. 

   1.  Para o tipo de concessão AuthorizationCode: 
      +  Para uma aplicação conectada gerenciada pelo cliente, o segredo deve conter a aplicação conectada Segredo do consumidor com a chave `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET`. 

1. No AWS Glue Glue Studio, crie uma conexão em **Conexões de dados** seguindo estas etapas: 

   1. Ao selecionar um **tipo de conexão**, escolha Google Ads.

   1. Forneça o `developer token` do Google Ads ao qual deseja se conectar.

   1. Forneça o `MANAGER ID` do Google Ads se você quiser fazer login como gerente.

   1.  Selecione o perfil do IAM que o AWS Glue pode assumir e tem permissões para as seguintes ações: 

------
#### [ JSON ]

****  

      ```
      {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
          {
            "Effect": "Allow",
            "Action": [
              "secretsmanager:DescribeSecret",
              "secretsmanager:GetSecretValue",
              "secretsmanager:PutSecretValue",
              "ec2:CreateNetworkInterface",
              "ec2:DescribeNetworkInterfaces",
              "ec2:DeleteNetworkInterface"
            ],
            "Resource": "*"
          }
        ]
      }
      ```

------

   1.  Selecione o `secretName` que você deseja usar para essa conexão no AWS Glue para colocar os tokens. 

   1.  Selecione as opções de rede se quiser usar sua rede. 

1.  Conceda permissão ao perfil do IAM associado ao seu trabalho do AWS Glue para ler `secretName`. 

# Leitura de entidades do Google Ads
<a name="googleads-reading-from-entities"></a>

 **Pré-requisitos** 
+  Um objeto do Google Ads do qual você deseja ler. Consulte a tabela de entidades compatíveis abaixo para verificar as entidades disponíveis. 

 **Entidades compatíveis** 


| Entidade | Pode ser filtrada | Oferece suporte a limite | Oferece suporte a Ordenar por | Oferece suporte a Selecionar \$1 | Oferece suporte a particionamento | 
| --- | --- | --- | --- | --- | --- | 
| Anúncio de grupo de anúncios | Sim | Sim | Sim | Não | Sim | 
| Grupo de anúncios | Sim | Sim | Sim | Não | Sim | 
| Orçamento da campanha | Sim | Sim | Sim | Sim | Sim | 
| Orçamento da conta | Sim | Não | Sim | Sim | Não | 
| Campaign | Sim | Sim | Sim | Sim | Sim | 
| Conta | Sim | Não | Sim | Não | Não | 

 **Exemplo** 

```
googleAds_read = glueContext.create_dynamic_frame.from_options(
    connection_type="googleads",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "campaign-3467***",
        "API_VERSION": "v16"
    }
```

 **Detalhes das entidades e dos campos do Google Ads** 


| Entidade | Campo | Tipo de dado | Operadores com suporte | 
| --- | --- | --- | --- | 
| Conta | resourceName | String | \$1=, = | 
| Conta | callReportingEnabled | Booleano | \$1=, = | 
| Conta | callConversionReportingEnabled | Booleano | \$1=, = | 
| Conta | callConversionAction | String | \$1=, = | 
| Conta | conversionTrackingId | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Conta | crossAccountConversionTrackingId | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Conta | payPerConversionEligibilityFailureReasons | Lista |  | 
| Conta | id | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Conta | currencyCode | String | \$1=, =, LIKE | 
| Conta | timeZone | String | \$1=, =, LIKE | 
| Conta | autoTaggingEnabled | Booleano | \$1=, = | 
| Conta | hasPartnersBadge | Booleano | \$1=, = | 
| Conta | manager | Booleano | \$1=, = | 
| Conta | testAccount | Booleano | \$1=, = | 
| Conta | date | Data | BETWEEN, =, <, >, <=, >= | 
| Conta | costMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Conta | acceptedCustomerDataTerms | Booleano |  | 
| Conta | conversionTrackingStatus | String | \$1=, =, LIKE | 
| Conta | enhancedConversionsForLeadsEnabled | Booleano |  | 
| Conta | googleAdsConversionCustomer | String |  | 
| Conta | status | String | \$1=, = | 
| Conta | allConversionsByConversionDate | Duplo | \$1=, =, <, > | 
| Conta | allConversionsValueByConversionDate | Duplo | \$1=, =, <, > | 
| Conta | conversionsByConversionDate | Duplo | \$1=, =, <, > | 
| Conta | conversionsValueByConversionDate | Duplo | \$1=, =, <, > | 
| Conta | valuePerAllConversionsByConversionDate | Duplo | \$1=, =, <, > | 
| Conta | videoViews | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Conta | cliques | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Conta | invalidClicks | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Conta | costPerAllConversions | Duplo | \$1=, =, <, > | 
| Conta | costPerConversion | Duplo | \$1=, =, <, > | 
| Conta | conversões | Duplo | \$1=, =, <, > | 
| Conta | absoluteTopImpressionPercentage | Duplo | \$1=, =, <, > | 
| Conta | impressões | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Conta | topImpressionPercentage | Duplo | \$1=, =, <, > | 
| Conta | averageCpc | Duplo | \$1=, =, <, > | 
| Conta | activeViewMeasurableCostMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Conta | averageCost | Duplo | \$1=, =, <, > | 
| Conta | ctr | Duplo | \$1=, =, <, > | 
| Conta | activeViewCtr | Duplo | \$1=, =, <, > | 
| Conta | searchImpressionShare | Duplo | \$1=, =, <, > | 
| Conta | conversionAction | String | \$1=, = | 
| Conta | conversionActionCategory | String | \$1=, = | 
| Conta | conversionActionName | String | \$1=, =, LIKE | 
| Orçamento da conta | resourceName | String | \$1=, = | 
| Orçamento da conta | status | String | \$1=, = | 
| Orçamento da conta | proposedEndTimeType | String | \$1=, = | 
| Orçamento da conta | approvedEndTimeType | String | \$1=, = | 
| Orçamento da conta | id | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Orçamento da conta | billingSetup | String | \$1=, = | 
| Orçamento da conta | nome | String | \$1=, =, LIKE | 
| Orçamento da conta | approvedStartDateTime |  DateTime | BETWEEN, =, <, >, <=, >= | 
| Orçamento da conta | proposedSpendingLimitMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Orçamento da conta | approvedSpendingLimitMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Orçamento da conta | adjustedSpendingLimitMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Orçamento da conta | amountServedMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Grupo de anúncios | resourceName | String | \$1=, =, LIKE | 
| Grupo de anúncios | status | String | \$1=, =, LIKE | 
| Grupo de anúncios | type | String | \$1=, =, LIKE | 
| Grupo de anúncios | id | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Grupo de anúncios | nome | String | \$1=, =, LIKE | 
| Grupo de anúncios | campaign | String | \$1=, = | 
| Grupo de anúncios | cpcBidMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Grupo de anúncios | targetCpaMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Grupo de anúncios | cpmBidMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Grupo de anúncios | cpvBidMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Grupo de anúncios | targetCpmMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Grupo de anúncios | effectiveTargetCpaMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Grupo de anúncios | date | Data | BETWEEN, =, <, >, <=, >= | 
| Grupo de anúncios | costMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Grupo de anúncios | useAudienceGrouped | Booleano | \$1=, = | 
| Grupo de anúncios | effectiveCpcBidMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Grupo de anúncios | allConversionsByConversionDate | Duplo | \$1=, =, <, > | 
| Grupo de anúncios | allConversionsValueByConversionDate | Duplo | \$1=, =, <, > | 
| Grupo de anúncios | conversionsByConversionDate | Duplo | \$1=, =, <, > | 
| Grupo de anúncios | conversionsValueByConversionDate | Duplo | \$1=, =, <, > | 
| Grupo de anúncios | valuePerAllConversionsByConversionDate | Duplo | \$1=, =, <, > | 
| Grupo de anúncios | valuePerConversionsByConversionDate | Duplo | \$1=, =, <, > | 
| Grupo de anúncios | averageCost | Duplo | \$1=, =, <, > | 
| Grupo de anúncios | costPerAllConversions | Duplo | \$1=, =, <, > | 
| Grupo de anúncios | costPerConversion | Duplo | \$1=, =, <, > | 
| Grupo de anúncios | averagePageViews | Duplo | \$1=, =, <, > | 
| Grupo de anúncios | videoViews | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Grupo de anúncios | cliques | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Grupo de anúncios | allConversions | Duplo | \$1=, =, <, > | 
| Grupo de anúncios | averageCpc | Duplo | \$1=, =, <, > | 
| Grupo de anúncios | absoluteTopImpressionPercentage | Duplo | \$1=, =, <, > | 
| Grupo de anúncios | impressões | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Grupo de anúncios | topImpressionPercentage | Duplo | \$1=, =, <, > | 
| Grupo de anúncios | activeViewCtr | Duplo | \$1=, =, <, > | 
| Grupo de anúncios | ctr | Duplo | \$1=, =, <, > | 
| Grupo de anúncios | searchTopImpressionShare | Duplo | \$1=, =, <, > | 
| Grupo de anúncios | searchImpressionShare | Duplo | \$1=, =, <, > | 
| Grupo de anúncios | searchAbsoluteTopImpressionShare | Duplo | \$1=, =, <, > | 
| Grupo de anúncios | relativeCtr | Duplo | \$1=, =, <, > | 
| Grupo de anúncios | conversionAction | String | \$1=, = | 
| Grupo de anúncios | conversionActionCategory | String | \$1=, = | 
| Grupo de anúncios | conversionActionName | String | \$1=, =, LIKE | 
| Grupo de anúncios | updateMask | String |  | 
| Grupo de anúncios | criar | Struct |  | 
| Grupo de anúncios | atualizar | Struct |  | 
| Grupo de anúncios | primaryStatus | String | \$1=, = | 
| Grupo de anúncios | primaryStatusReasons | Lista |  | 
| Anúncio de grupo de anúncios | resourceName | String | \$1=, = | 
| Anúncio de grupo de anúncios | id | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Anúncio de grupo de anúncios | status | String | \$1=, = | 
| Anúncio de grupo de anúncios | rótulos | Lista |  | 
| Anúncio de grupo de anúncios | adGroup | String | \$1=, = | 
| Anúncio de grupo de anúncios | costMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Anúncio de grupo de anúncios | approvalStatus | String | \$1=, = | 
| Anúncio de grupo de anúncios | reviewStatus | String | \$1=, = | 
| Anúncio de grupo de anúncios | adStrength | String | \$1=, = | 
| Anúncio de grupo de anúncios | type | String | \$1=, = | 
| Anúncio de grupo de anúncios | businessName | String | \$1=, =, LIKE | 
| Anúncio de grupo de anúncios | date | Data | BETWEEN, =, <, >, <=, >= | 
| Anúncio de grupo de anúncios | allConversionsByConversionDate | Duplo | \$1=, =, <, > | 
| Anúncio de grupo de anúncios | allConversionsValueByConversionDate | Duplo | \$1=, =, <, > | 
| Anúncio de grupo de anúncios | conversionsByConversionDate | Duplo | \$1=, =, <, > | 
| Anúncio de grupo de anúncios | conversionsValueByConversionDate | Duplo | \$1=, =, <, > | 
| Anúncio de grupo de anúncios | valuePerAllConversionsByConversionDate | Duplo | \$1=, =, <, > | 
| Anúncio de grupo de anúncios | valuePerConversionsByConversionDate | Duplo | \$1=, =, <, > | 
| Anúncio de grupo de anúncios | activeViewMeasurableCostMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Anúncio de grupo de anúncios | averageCost | Duplo | \$1=, =, <, > | 
| Anúncio de grupo de anúncios | costPerAllConversions | Duplo | \$1=, =, <, > | 
| Anúncio de grupo de anúncios | costPerConversion | Duplo | \$1=, =, <, > | 
| Anúncio de grupo de anúncios | cliques | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Anúncio de grupo de anúncios | averagePageViews | Duplo | \$1=, =, <, > | 
| Anúncio de grupo de anúncios | videoViews | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Anúncio de grupo de anúncios | allConversions | Duplo | \$1=, =, <, > | 
| Anúncio de grupo de anúncios | averageCpc | Duplo | \$1=, =, <, > | 
| Anúncio de grupo de anúncios | topImpressionPercentage | Duplo | \$1=, =, <, > | 
| Anúncio de grupo de anúncios | impressões | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Anúncio de grupo de anúncios | absoluteTopImpressionPercentage | Duplo | \$1=, =, <, > | 
| Anúncio de grupo de anúncios | activeViewCtr | Duplo | \$1=, =, <, > | 
| Anúncio de grupo de anúncios | ctr | Duplo | \$1=, =, <, > | 
| Anúncio de grupo de anúncios | conversionAction | String | \$1=, = | 
| Anúncio de grupo de anúncios | conversionActionCategory | String | \$1=, = | 
| Anúncio de grupo de anúncios | conversionActionName | String | \$1=, =, LIKE | 
| Anúncio de grupo de anúncios | updateMask | String |  | 
| Anúncio de grupo de anúncios | criar | Struct |  | 
| Anúncio de grupo de anúncios | atualizar | Struct |  | 
| Anúncio de grupo de anúncios | policyValidationParameter | Struct |  | 
| Anúncio de grupo de anúncios | primaryStatus | String | \$1=, = | 
| Anúncio de grupo de anúncios | primaryStatusReasons | Lista |  | 
| Campaign | resourceName | String | \$1=, = | 
| Campaign | status | String | \$1=, = | 
| Campaign | baseCampaign | String | \$1=, = | 
| Campaign | nome | String | \$1=, =, LIKE | 
| Campaign | id | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Campaign | campaignBudget | String | \$1=, =, LIKE | 
| Campaign | startDate | Data | BETWEEN, =, <, >, <=, >= | 
| Campaign | endDate | Data | BETWEEN, =, <, >, <=, >= | 
| Campaign | adServingOptimizationStatus | String | \$1=, = | 
| Campaign | advertisingChannelType | String | \$1=, = | 
| Campaign | advertisingChannelSubType | String | \$1=, = | 
| Campaign | experimentType | String | \$1=, = | 
| Campaign | servingStatus | String | \$1=, = | 
| Campaign | biddingStrategyType | String | \$1=, = | 
| Campaign | domainName | String | \$1=, =, LIKE | 
| Campaign | languageCode | String | \$1=, =, LIKE | 
| Campaign | useSuppliedUrlsOnly | Booleano | \$1=, = | 
| Campaign | positiveGeoTargetType | String | \$1=, = | 
| Campaign | negativeGeoTargetType | String | \$1=, = | 
| Campaign | paymentMode | String | \$1=, = | 
| Campaign | optimizationGoalTypes | Lista |  | 
| Campaign | date | Data | BETWEEN, =, <, >, <=, >= | 
| Campaign | averageCost | Duplo |  | 
| Campaign | cliques | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Campaign | costMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Campaign | impressões | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Campaign | useAudienceGrouped | Booleano | \$1=, = | 
| Campaign | activeViewMeasurableCostMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Campaign | costPerAllConversions | Duplo | \$1=, =, <, > | 
| Campaign | costPerConversion | Duplo | \$1=, =, <, > | 
| Campaign | invalidClicks | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Campaign | publisherPurchasedClicks | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Campaign | averagePageViews | Duplo | \$1=, =, <, > | 
| Campaign | videoViews | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Campaign | allConversionsByConversionDate | Duplo | \$1=, =, <, > | 
| Campaign | allConversionsValueByConversionDate | Duplo | \$1=, =, <, > | 
| Campaign | conversionsByConversionDate | Duplo | \$1=, =, <, > | 
| Campaign | conversionsValueByConversionDate | Duplo | \$1=, =, <, > | 
| Campaign | valuePerAllConversionsByConversionDate | Duplo | \$1=, =, <, > | 
| Campaign | valuePerConversionsByConversionDate | Duplo | \$1=, =, <, > | 
| Campaign | allConversions | Duplo | \$1=, =, <, > | 
| Campaign | absoluteTopImpressionPercentage | Duplo | \$1=, =, <, > | 
| Campaign | searchAbsoluteTopImpressionShare | Duplo | \$1=, =, <, > | 
| Campaign | averageCpc | Duplo | \$1=, =, <, > | 
| Campaign | searchImpressionShare | Duplo | \$1=, =, <, > | 
| Campaign | searchTopImpressionShare | Duplo | \$1=, =, <, > | 
| Campaign | activeViewCtr | Duplo | \$1=, =, <, > | 
| Campaign | ctr | Duplo | \$1=, =, <, > | 
| Campaign | relativeCtr | Duplo | \$1=, =, <, > | 
| Campaign | updateMask | String |  | 
| Campaign | criar | Struct |  | 
| Campaign | atualizar | Struct |  | 
| Orçamento da campanha | resourceName | String | \$1=, = | 
| Orçamento da campanha | id | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Orçamento da campanha | status | String | \$1=, = | 
| Orçamento da campanha | deliveryMethod | String | \$1=, = | 
| Orçamento da campanha | período | String | \$1=, = | 
| Orçamento da campanha | type | String | \$1=, = | 
| Orçamento da campanha | nome | String | \$1=, =, LIKE | 
| Orçamento da campanha | amountMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Orçamento da campanha | explicitlyShared | Booleano | \$1=, = | 
| Orçamento da campanha | referenceCount | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Orçamento da campanha | hasRecommendedBudget | Booleano | \$1=, = | 
| Orçamento da campanha | date | Data | BETWEEN, =, <, >, <=, >= | 
| Orçamento da campanha | costMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Orçamento da campanha | startDate | Data | BETWEEN, =, <, >, <=, >= | 
| Orçamento da campanha | endDate | Data | BETWEEN, =, <, >, <=, >= | 
| Orçamento da campanha | maximizeConversionValueTargetRoas | Duplo | \$1=, =, <, > | 
| Orçamento da campanha | maximizeConversionsTargetCpaMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Orçamento da campanha | selectiveOptimizationConversionActions | String |  | 
| Orçamento da campanha | averageCost | Duplo | \$1=, =, <, > | 
| Orçamento da campanha | costPerAllConversions | Duplo | \$1=, =, <, > | 
| Orçamento da campanha | costPerConversion | Duplo | \$1=, =, <, > | 
| Orçamento da campanha | videoViews | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Orçamento da campanha | cliques | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Orçamento da campanha | allConversions | Duplo | \$1=, =, <, > | 
| Orçamento da campanha | valuePerAllConversions | Duplo | \$1=, =, <, > | 
| Orçamento da campanha | averageCpc | Duplo | \$1=, =, <, > | 
| Orçamento da campanha | impressões | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Orçamento da campanha | ctr | Duplo | \$1=, =, <, > | 
| Orçamento da campanha | updateMask | String |  | 
| Orçamento da campanha | criar | Struct |  | 
| Orçamento da campanha | atualizar | Struct |  | 

 **Particionamento de consultas** 

 Podem ser fornecidas as opções adicionais do Spark `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` e `NUM_PARTITIONS` se você quiser utilizar a simultaneidade no Spark. Com esses parâmetros, a consulta original seria dividida em `NUM_PARTITIONS` subconsultas, que poderiam ser executadas pelas tarefas do Spark simultaneamente. 
+  `PARTITION_FIELD`: o nome do campo a ser usado para particionar a consulta. 
+  `LOWER_BOUND`: um valor limite inferior inclusivo do campo de partição escolhido. 

   Na data, aceitamos o formato de data do Spark usado em consultas SQL do Spark. Exemplo de valores válidos: `"2024-02-06"`. 
+  `UPPER_BOUND`: um valor limite superior exclusivo do campo de partição escolhido. 
+  `NUM_PARTITIONS`: número de partições. 

 Os detalhes do suporte do campo de particionamento relativo às entidades são capturados na tabela a seguir. 


| Entity Name | Campo de particionamento | Tipo de dado | 
| --- | --- | --- | 
| Anúncio de grupo de anúncios | date | Data | 
| Grupo de anúncios | date | Data | 
| Campaign | date | Data | 
| Orçamento da campanha | date | Data | 

 **Exemplo** 

```
googleads_read = glueContext.create_dynamic_frame.from_options(
    connection_type="googleads",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "campaign-3467***",
        "API_VERSION": "v16",
        "PARTITION_FIELD": "date"
        "LOWER_BOUND": "2024-01-01"
        "UPPER_BOUND": "2024-06-05"
        "NUM_PARTITIONS": "10"
    }
)
```

# Opções de conexão do Google Ads
<a name="googleads-connection-options"></a>

Estas são as opções de conexão do Google Ads:
+  `ENTITY_NAME`(string): (obrigatório) usado para leitura/gravação. O nome do objeto no Google Ads. 
+  `API_VERSION`(string): (obrigatório) usado para leitura/gravação. Versão da API Rest do Google Ads que você deseja usar. Exemplo: v16. 
+  `DEVELOPER_TOKEN`(string): (obrigatório) usado para leitura/gravação. Necessário para autenticar o desenvolvedor ou a aplicação que faz solicitações à API. 
+  `MANAGER_ID`(string): usado para leitura/gravação. Um identificador exclusivo que permite gerenciar várias contas do Google Ads. Este é o ID do cliente do gerente autorizado. Se o seu acesso à conta do cliente for por meio de uma conta de gerente, o `MANAGER_ID` é necessário. Para obter mais informações, consulte [login-customer-id](https://developers.google.com/google-ads/api/docs/concepts/call-structure#cid). 
+  `SELECTED_FIELDS`(Lista<String>): padrão: vazio(SELECIONE \$1). Usado para leitura. Colunas que deseja selecionar para o objeto. 
+  `FILTER_PREDICATE`(string): padrão: vazio. Usado para leitura. Deve estar no formato Spark SQL. 
+  `QUERY`(String): padrão: vazia. Usado para leitura. Consulta completa do Spark SQL. 
+  `PARTITION_FIELD`(string): usado para leitura. Campo a ser usado para particionar a consulta. 
+  `LOWER_BOUND`(string): usado para leitura. Um valor limite inferior inclusivo do campo de partição escolhido. 
+  `UPPER_BOUND`(string): usado para leitura. Um valor limite superior exclusivo do campo de partição escolhido. 
+  `NUM_PARTITIONS`(Inteiro): padrão: 1. Usado para leitura. Número de partições para leitura. 

# Criar uma conta do Google Ads
<a name="googleads-create-account"></a>

1.  Faça login na [Conta de desenvolvedor do Google Ads](https://console.cloud.google.com) com suas credenciais e vá para \$1MyProject.   
![\[A captura de tela mostra a tela de boas-vindas para login na conta de desenvolvedor do Google Ads.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/google-ads-log-in-developer-account.png)

1.  Escolha **Novo projeto** e forneça as informações necessárias para criar um projeto do Google, caso não tenha nenhuma aplicação registrada nele.   
![\[A captura de tela mostra a página de seleção de um projeto. Escolha Novo projeto no canto superior direito.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/google-ads-new-project.png)  
![\[A captura de tela mostra a janela Novo projeto para inserir o nome do projeto e escolher um local.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/google-ads-new-project-name-location.png)

1.  Escolha a guia **Navegação**, depois **API e configuração** e **Criar ID de cliente** e **ClientSecret**, que exigirão configurações adicionais para criar uma conexão entre o AWS Glue e o Google Ads. Para obter mais informações, consulte [Credenciais da API](https://console.cloud.google.com/apis/credentials).   
![\[A captura de tela mostra a página de configuração de APIs e serviços.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/google-ads-apis-and-services.png)

1.  Escolha **CRIAR CREDENCIAIS** e, em seguida, **ID do cliente OAuth**.   
![\[A captura de tela mostra a página de configuração de APIs e serviços com o menu suspenso Criar credenciais e a opção ID do cliente Oauth destacada.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/google-ads-create-credentials.png)

1.  Selecione **Tipo de aplicação** como **Aplicação Web**.   
![\[A captura de tela mostra a página Criar ID do cliiente OAuth e o Tipo de aplicação como Aplicação Web.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/google-ads-oauth-client-id-application-type.png)

1.  Em **URIs de redirecionamento autorizados**, adicione os URIs de redirecionamento OAuth e escolha **Criar**. Se necessário, é possível adicionar vários URIs de redirecionamento.   
![\[A captura de tela mostra a página Create OAuth client ID e a seção Authorised redirect URIs. Aqui, adicione os URIs e escolha ADD URI, se necessário. Ao concluir, escolha CREATE.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/google-ads-oauth-redirect-uris.png)

1.  Seu **ID do cliente** e o **Segredo do cliente** serão gerados ao criar uma conexão entre o AWS Glue e o Google Ads.   
![\[A captura de tela mostra a página Create OAuth client ID e a seção Authorised redirect URIs. Aqui, adicione os URIs e escolha ADD URI, se necessário. Ao concluir, escolha CREATE.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/google-ads-oauth-client-created.png)

1.  Adicione os escopos de acordo com as necessidades da sua aplicação, escolha a **Tela de consentimento do OAuth**, forneça as informações necessárias e adicione os escopos com base nos requisitos.   
![\[A captura de tela mostra a página Atualizar escopos selecionados. Selecione os escopos conforme necessário.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/google-ads-selected-scopes.png)

# Limitações
<a name="googleads-connector-limitations"></a>

Estas são as limitações do conector do Google Ads:
+ `MANAGER_ID` é uma entrada opcional na criação de uma conexão. Porém, quando você deseja acessar os clientes sob um gerente específico, `MANAGER_ID` é uma entrada obrigatória. A tabela abaixo explica as limitações de acesso com base no fato de `MANAGER_ID` estar ou não incluído em uma conexão.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/googleads-connector-limitations.html)
+ Quando uma conta de gerente for escolhida como objeto, apenas `Account` aparecerá como subobjeto. No conector do Google Ads, entidades como campanhas, anúncios etc. são recuperadas com base em contas de clientes individuais, não na conta de gerente.
+ Você não pode recuperar métricas para a conta de gerente. Em vez disso, é possível recuperar métricas para contas de clientes individuais.
+  Cada conta pode ter até 10 mil campanhas, incluindo campanhas ativas e pausadas. Para obter mais informações, acesse [Campanha por conta](https://support.google.com/google-ads/answer/6372658). 
+  Ao criar um relatório, se você escolher determinadas métricas para exibir, as linhas cujas métricas selecionadas forem todas zero não serão retornadas. Para obter mais informações, consulte [Métricas zero](https://developers.google.com/google-ads/api/docs/reporting/zero-metrics?hl=en#exclude_zero_metrics_by_segmenting). 
+  Com os campos a seguir, o fluxo de mapeamento completo não funcionará para entidades de conta, grupo de anúncios e anúncios de grupos de anúncios, especificamente para conversionAction, conversionActionCategory e conversionActionName. Para obter mais informações, consulte [Segmento e métricas](https://developers.google.com/google-ads/api/docs/reporting/segmentation?hl=en#selectability_between_segments_and_metrics). 
+ Um filtro de intervalo de datas é obrigatório quando o campo `segments.date` é selecionado.