

# Conexión a Google Ads
<a name="connecting-to-googleads"></a>

 La API de Google Ads es la interfaz programática de Google Ads que se utiliza para administrar cuentas y campañas de Google Ads grandes o complejas. Si es usuario de Google Ads, puede conectar AWS Glue a la cuenta de Google Ads. Luego, podrá usar Google Ads como origen de datos en los trabajos de ETL. Ejecute estos trabajos para transferir datos entre Google Ads y los servicios de AWS u otras aplicaciones compatibles. 

**Topics**
+ [Compatibilidad de AWS Glue con Google Ads](googleads-support.md)
+ [Políticas que contienen las operaciones de la API para crear y usar conexiones](googleads-configuring-iam-permissions.md)
+ [Configuración de Google Ads](googleads-configuring.md)
+ [Configuración de conexiones a Google Ads](googleads-configuring-connections.md)
+ [Lectura desde entidades de Google Ads](googleads-reading-from-entities.md)
+ [Opciones de conexión a Google Ads](googleads-connection-options.md)
+ [Crear una cuenta de Google Ads](googleads-create-account.md)
+ [Limitaciones](googleads-connector-limitations.md)

# Compatibilidad de AWS Glue con Google Ads
<a name="googleads-support"></a>

AWS Glue es compatible con Google Ads de la siguiente manera:

**¿Es compatible como origen?**  
Sí. Puede usar los trabajos de ETL de AWS Glue para consultar datos de Google Ads.

**¿Es compatible como destino?**  
No.

**Versiones de la API de Google Ads compatibles**  
v18

# Políticas que contienen las operaciones de la API para crear y usar conexiones
<a name="googleads-configuring-iam-permissions"></a>

 En el siguiente ejemplo de política se describen los permisos de AWS necesarios para crear y utilizar conexiones. Si va a crear un nuevo rol, cree una política que contenga lo siguiente: 

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

****  

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

------

También puede usar las siguientes políticas de IAM administradas para permitir el acceso:
+  [AWSGlueServiceRole](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AWSGlueServiceRole): concede acceso a los recursos que necesitan diversos procesos de AWS Glue para ejecutarse en su nombre. Entre estos recursos se incluyen AWS Glue, Amazon S3, IAM, CloudWatch Logs y Amazon EC2. Si aplica la convención de nomenclatura en los recursos especificados en esta política, los procesos de AWS Glue tienen los permisos necesarios. Normalmente, esta política se asocia a los roles que se especifican a la hora de definir rastreadores, trabajos y puntos de conexión de desarrollo. 
+  [AWSGlueConsoleFullAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AWSGlueConsoleFullAccess): concede acceso total a los recursos de AWS Glue cuando una identidad a la que está asociada la política utiliza la consola de administración de AWS. Si sigue la convención de nomenclatura para los recursos especificados en esta política, los usuarios dispondrán de todas las funciones de la consola. Esta política se suele adjuntar a los usuarios de la consola AWS Glue. 

# Configuración de Google Ads
<a name="googleads-configuring"></a>

Antes de poder utilizar AWS Glue para transferir datos desde Google Ads, debe cumplir estos requisitos:

## Requisitos mínimos
<a name="googleads-configuring-min-requirements"></a>
+  Tener una cuenta de Google Ads con correo electrónico y contraseña. Para obtener más información sobre cómo crear una cuenta, consulte [Creación de una cuenta de Google Ads](googleads-create-account.md). 
+  La cuenta de Google Ads debe estar habilitada para el acceso de API. La API de Google Ads se puede utilizar sin ningún costo adicional. 
+  Su cuenta de Google Ads le permite instalar aplicaciones conectadas. Si no tiene acceso a esta funcionalidad, contacte con su administrador de Google Ads. 

 Si cumple estos requisitos, lo tendrá todo listo para conectar AWS Glue a su cuenta de Google Ads. 

# Configuración de conexiones a Google Ads
<a name="googleads-configuring-connections"></a>

 Google Ads admite el tipo de concesión `AUTHORIZATION_CODE` para OAuth2. 

 Este tipo de concesión se considera un OAuth “de tres vías”, ya que se basa en redirigir a los usuarios al servidor de autorización externo para autenticar al usuario. Se utiliza para crear conexiones a través de la consola de AWS Glue. La consola de AWS Glue redirigirá al usuario a Google Ads, donde deberá iniciar sesión y conceder a AWS Glue los permisos solicitados para acceder a la instancia de Google Ads. 

 Los usuarios pueden optar por crear su propia aplicación conectada en Google Ads y proporcionar su propio ID y secreto de cliente al crear conexiones a través de la consola de AWS Glue. En este escenario, aún se abrirá Google Ads para iniciar sesión y autorizar a AWS Glue para que acceda a sus recursos. 

 Este tipo de concesión da como resultado un token de actualización y un token de acceso. El token de acceso es de corta duración y se puede actualizar automáticamente sin la interacción del usuario mediante el token de actualización. 

 Para obtener más información, consulte la [documentación pública de Google Ads sobre la creación de una aplicación conectada para el flujo Authorization Code OAuth](https://developers.google.com/workspace/guides/create-credentials). 

Para configurar una conexión a Google Ads:

1.  En AWS Secrets Manager, cree un secreto con los siguientes detalles. Es necesario crear un secreto para cada conexión en AWS Glue. 

   1.  Para el tipo de concesión AuthorizationCode: 
      +  En el caso de una aplicación conectada administrada por el cliente, el secreto debe contener el secreto del consumidor de la aplicación conectada con la clave `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET`. 

1. En AWS Glue Glue Studio, cree una conexión en **Conexiones de datos** según los pasos que se indican a continuación: 

   1. Cuando elija un **Tipo de conexión**, seleccione Google Ads.

   1. Proporcione la `developer token` de Google Ads a la que se desea conectar.

   1. Proporcione el `MANAGER ID` de Google Ads si desea iniciar sesión como administrador.

   1.  Seleccione el rol de IAM que AWS Glue pueda asumir y que tenga permisos para las siguientes acciones: 

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

****  

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

------

   1.  Seleccione el `secretName` que desee usar para esta conexión en AWS Glue para colocar los tokens. 

   1.  Seleccione las opciones de red si quiere usar su red. 

1.  Conceda el rol de IAM asociado a su permiso de trabajo de AWS Glue para leer `secretName`. 

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

 **Requisitos previos** 
+  Un objeto de Google Ads desde el cual le gustaría leer. Consulte la tabla de entidades compatibles que aparece a continuación para comprobar las entidades disponibles. 

 **Entidades compatibles** 


| Entidad | Se puede filtrar | Admite límite | Admite Ordenar por | Admite Seleccionar \$1 | Admite Partición | 
| --- | --- | --- | --- | --- | --- | 
| Anuncio de grupo de anuncios | Sí | Sí | Sí | No | Sí | 
| Grupo de anuncios | Sí | Sí | Sí | No | Sí | 
| Presupuesto de campaña | Sí | Sí | Sí | Sí | Sí | 
| Presupuesto de cuenta | Sí | No | Sí | Sí | No | 
| Campaña | Sí | Sí | Sí | Sí | Sí | 
| Cuenta | Sí | No | Sí | No | No | 

 **Ejemplo** 

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

 **Detalles de la entidad y el campo de Google Ads** 


| Entidad | Campo | Tipo de datos | Operadores admitidos | 
| --- | --- | --- | --- | 
| Cuenta | resourceName | Cadena | \$1=, = | 
| Cuenta | callReportingEnabled | Booleano | \$1=, = | 
| Cuenta | callConversionReportingEnabled | Booleano | \$1=, = | 
| Cuenta | callConversionAction | Cadena | \$1=, = | 
| Cuenta | conversionTrackingId | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Cuenta | crossAccountConversionTrackingId | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Cuenta | payPerConversionEligibilityFailureReasons | Enumeración |  | 
| Cuenta | id | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Cuenta | currencyCode | Cadena | \$1=, =, LIKE | 
| Cuenta | timeZone | Cadena | \$1=, =, LIKE | 
| Cuenta | autoTaggingEnabled | Booleano | \$1=, = | 
| Cuenta | hasPartnersBadge | Booleano | \$1=, = | 
| Cuenta | manager | Booleano | \$1=, = | 
| Cuenta | testAccount | Booleano | \$1=, = | 
| Cuenta | date | Date | BETWEEN, =, <, >, <=, >= | 
| Cuenta | costMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Cuenta | acceptedCustomerDataTerms | Booleano |  | 
| Cuenta | conversionTrackingStatus | Cadena | \$1=, =, LIKE | 
| Cuenta | enhancedConversionsForLeadsEnabled | Booleano |  | 
| Cuenta | googleAdsConversionCustomer | Cadena |  | 
| Cuenta | status | Cadena | \$1=, = | 
| Cuenta | allConversionsByConversionDate | Doble | \$1=, =, <, > | 
| Cuenta | allConversionsValueByConversionDate | Doble | \$1=, =, <, > | 
| Cuenta | conversionsByConversionDate | Doble | \$1=, =, <, > | 
| Cuenta | conversionsValueByConversionDate | Doble | \$1=, =, <, > | 
| Cuenta | valuePerAllConversionsByConversionDate | Doble | \$1=, =, <, > | 
| Cuenta | videoViews | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Cuenta | clicks | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Cuenta | invalidClicks | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Cuenta | costPerAllConversions | Doble | \$1=, =, <, > | 
| Cuenta | costPerConversion | Doble | \$1=, =, <, > | 
| Cuenta | conversions | Doble | \$1=, =, <, > | 
| Cuenta | absoluteTopImpressionPercentage | Doble | \$1=, =, <, > | 
| Cuenta | impresiones | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Cuenta | topImpressionPercentage | Doble | \$1=, =, <, > | 
| Cuenta | averageCpc | Doble | \$1=, =, <, > | 
| Cuenta | activeViewMeasurableCostMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Cuenta | averageCost | Doble | \$1=, =, <, > | 
| Cuenta | ctr | Doble | \$1=, =, <, > | 
| Cuenta | activeViewCtr | Doble | \$1=, =, <, > | 
| Cuenta | searchImpressionShare | Doble | \$1=, =, <, > | 
| Cuenta | conversionAction | Cadena | \$1=, = | 
| Cuenta | conversionActionCategory | Cadena | \$1=, = | 
| Cuenta | conversionActionName | Cadena | \$1=, =, LIKE | 
| Presupuesto de cuenta | resourceName | Cadena | \$1=, = | 
| Presupuesto de cuenta | status | Cadena | \$1=, = | 
| Presupuesto de cuenta | proposedEndTimeType | Cadena | \$1=, = | 
| Presupuesto de cuenta | approvedEndTimeType | Cadena | \$1=, = | 
| Presupuesto de cuenta | id | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Presupuesto de cuenta | billingSetup | Cadena | \$1=, = | 
| Presupuesto de cuenta | nombre | Cadena | \$1=, =, LIKE | 
| Presupuesto de cuenta | approvedStartDateTime |  DateTime | BETWEEN, =, <, >, <=, >= | 
| Presupuesto de cuenta | proposedSpendingLimitMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Presupuesto de cuenta | approvedSpendingLimitMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Presupuesto de cuenta | adjustedSpendingLimitMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Presupuesto de cuenta | amountServedMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Grupo de anuncios | resourceName | Cadena | \$1=, =, LIKE | 
| Grupo de anuncios | status | Cadena | \$1=, =, LIKE | 
| Grupo de anuncios | type | Cadena | \$1=, =, LIKE | 
| Grupo de anuncios | id | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Grupo de anuncios | nombre | Cadena | \$1=, =, LIKE | 
| Grupo de anuncios | campaña | Cadena | \$1=, = | 
| Grupo de anuncios | cpcBidMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Grupo de anuncios | targetCpaMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Grupo de anuncios | cpmBidMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Grupo de anuncios | cpvBidMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Grupo de anuncios | targetCpmMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Grupo de anuncios | effectiveTargetCpaMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Grupo de anuncios | date | Date | BETWEEN, =, <, >, <=, >= | 
| Grupo de anuncios | costMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Grupo de anuncios | useAudienceGrouped | Booleano | \$1=, = | 
| Grupo de anuncios | effectiveCpcBidMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Grupo de anuncios | allConversionsByConversionDate | Doble | \$1=, =, <, > | 
| Grupo de anuncios | allConversionsValueByConversionDate | Doble | \$1=, =, <, > | 
| Grupo de anuncios | conversionsByConversionDate | Doble | \$1=, =, <, > | 
| Grupo de anuncios | conversionsValueByConversionDate | Doble | \$1=, =, <, > | 
| Grupo de anuncios | valuePerAllConversionsByConversionDate | Doble | \$1=, =, <, > | 
| Grupo de anuncios | valuePerConversionsByConversionDate | Doble | \$1=, =, <, > | 
| Grupo de anuncios | averageCost | Doble | \$1=, =, <, > | 
| Grupo de anuncios | costPerAllConversions | Doble | \$1=, =, <, > | 
| Grupo de anuncios | costPerConversion | Doble | \$1=, =, <, > | 
| Grupo de anuncios | averagePageViews | Doble | \$1=, =, <, > | 
| Grupo de anuncios | videoViews | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Grupo de anuncios | clicks | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Grupo de anuncios | allConversions | Doble | \$1=, =, <, > | 
| Grupo de anuncios | averageCpc | Doble | \$1=, =, <, > | 
| Grupo de anuncios | absoluteTopImpressionPercentage | Doble | \$1=, =, <, > | 
| Grupo de anuncios | impresiones | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Grupo de anuncios | topImpressionPercentage | Doble | \$1=, =, <, > | 
| Grupo de anuncios | activeViewCtr | Doble | \$1=, =, <, > | 
| Grupo de anuncios | ctr | Doble | \$1=, =, <, > | 
| Grupo de anuncios | searchTopImpressionShare | Doble | \$1=, =, <, > | 
| Grupo de anuncios | searchImpressionShare | Doble | \$1=, =, <, > | 
| Grupo de anuncios | searchAbsoluteTopImpressionShare | Doble | \$1=, =, <, > | 
| Grupo de anuncios | relativeCtr | Doble | \$1=, =, <, > | 
| Grupo de anuncios | conversionAction | Cadena | \$1=, = | 
| Grupo de anuncios | conversionActionCategory | Cadena | \$1=, = | 
| Grupo de anuncios | conversionActionName | Cadena | \$1=, =, LIKE | 
| Grupo de anuncios | updateMask | Cadena |  | 
| Grupo de anuncios | crear | Struct |  | 
| Grupo de anuncios | actualización | Struct |  | 
| Grupo de anuncios | primaryStatus | Cadena | \$1=, = | 
| Grupo de anuncios | primaryStatusReasons | Enumeración |  | 
| Anuncio de grupo de anuncios | resourceName | Cadena | \$1=, = | 
| Anuncio de grupo de anuncios | id | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Anuncio de grupo de anuncios | status | Cadena | \$1=, = | 
| Anuncio de grupo de anuncios | etiquetas | Enumeración |  | 
| Anuncio de grupo de anuncios | adGroup | Cadena | \$1=, = | 
| Anuncio de grupo de anuncios | costMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Anuncio de grupo de anuncios | approvalStatus | Cadena | \$1=, = | 
| Anuncio de grupo de anuncios | reviewStatus | Cadena | \$1=, = | 
| Anuncio de grupo de anuncios | adStrength | Cadena | \$1=, = | 
| Anuncio de grupo de anuncios | type | Cadena | \$1=, = | 
| Anuncio de grupo de anuncios | businessName | Cadena | \$1=, =, LIKE | 
| Anuncio de grupo de anuncios | date | Date | BETWEEN, =, <, >, <=, >= | 
| Anuncio de grupo de anuncios | allConversionsByConversionDate | Doble | \$1=, =, <, > | 
| Anuncio de grupo de anuncios | allConversionsValueByConversionDate | Doble | \$1=, =, <, > | 
| Anuncio de grupo de anuncios | conversionsByConversionDate | Doble | \$1=, =, <, > | 
| Anuncio de grupo de anuncios | conversionsValueByConversionDate | Doble | \$1=, =, <, > | 
| Anuncio de grupo de anuncios | valuePerAllConversionsByConversionDate | Doble | \$1=, =, <, > | 
| Anuncio de grupo de anuncios | valuePerConversionsByConversionDate | Doble | \$1=, =, <, > | 
| Anuncio de grupo de anuncios | activeViewMeasurableCostMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Anuncio de grupo de anuncios | averageCost | Doble | \$1=, =, <, > | 
| Anuncio de grupo de anuncios | costPerAllConversions | Doble | \$1=, =, <, > | 
| Anuncio de grupo de anuncios | costPerConversion | Doble | \$1=, =, <, > | 
| Anuncio de grupo de anuncios | clicks | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Anuncio de grupo de anuncios | averagePageViews | Doble | \$1=, =, <, > | 
| Anuncio de grupo de anuncios | videoViews | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Anuncio de grupo de anuncios | allConversions | Doble | \$1=, =, <, > | 
| Anuncio de grupo de anuncios | averageCpc | Doble | \$1=, =, <, > | 
| Anuncio de grupo de anuncios | topImpressionPercentage | Doble | \$1=, =, <, > | 
| Anuncio de grupo de anuncios | impresiones | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Anuncio de grupo de anuncios | absoluteTopImpressionPercentage | Doble | \$1=, =, <, > | 
| Anuncio de grupo de anuncios | activeViewCtr | Doble | \$1=, =, <, > | 
| Anuncio de grupo de anuncios | ctr | Doble | \$1=, =, <, > | 
| Anuncio de grupo de anuncios | conversionAction | Cadena | \$1=, = | 
| Anuncio de grupo de anuncios | conversionActionCategory | Cadena | \$1=, = | 
| Anuncio de grupo de anuncios | conversionActionName | Cadena | \$1=, =, LIKE | 
| Anuncio de grupo de anuncios | updateMask | Cadena |  | 
| Anuncio de grupo de anuncios | crear | Struct |  | 
| Anuncio de grupo de anuncios | actualización | Struct |  | 
| Anuncio de grupo de anuncios | policyValidationParameter | Struct |  | 
| Anuncio de grupo de anuncios | primaryStatus | Cadena | \$1=, = | 
| Anuncio de grupo de anuncios | primaryStatusReasons | Enumeración |  | 
| Campaña | resourceName | Cadena | \$1=, = | 
| Campaña | status | Cadena | \$1=, = | 
| Campaña | baseCampaign | Cadena | \$1=, = | 
| Campaña | nombre | Cadena | \$1=, =, LIKE | 
| Campaña | id | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Campaña | campaignBudget | Cadena | \$1=, =, LIKE | 
| Campaña | startDate | Date | BETWEEN, =, <, >, <=, >= | 
| Campaña | endDate | Date | BETWEEN, =, <, >, <=, >= | 
| Campaña | adServingOptimizationStatus | Cadena | \$1=, = | 
| Campaña | advertisingChannelType | Cadena | \$1=, = | 
| Campaña | advertisingChannelSubType | Cadena | \$1=, = | 
| Campaña | experimentType | Cadena | \$1=, = | 
| Campaña | servingStatus | Cadena | \$1=, = | 
| Campaña | biddingStrategyType | Cadena | \$1=, = | 
| Campaña | domainName | Cadena | \$1=, =, LIKE | 
| Campaña | languageCode | Cadena | \$1=, =, LIKE | 
| Campaña | useSuppliedUrlsOnly | Booleano | \$1=, = | 
| Campaña | positiveGeoTargetType | Cadena | \$1=, = | 
| Campaña | negativeGeoTargetType | Cadena | \$1=, = | 
| Campaña | paymentMode | Cadena | \$1=, = | 
| Campaña | optimizationGoalTypes | Enumeración |  | 
| Campaña | date | Date | BETWEEN, =, <, >, <=, >= | 
| Campaña | averageCost | Doble |  | 
| Campaña | clicks | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Campaña | costMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Campaña | impresiones | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Campaña | useAudienceGrouped | Booleano | \$1=, = | 
| Campaña | activeViewMeasurableCostMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Campaña | costPerAllConversions | Doble | \$1=, =, <, > | 
| Campaña | costPerConversion | Doble | \$1=, =, <, > | 
| Campaña | invalidClicks | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Campaña | publisherPurchasedClicks | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Campaña | averagePageViews | Doble | \$1=, =, <, > | 
| Campaña | videoViews | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Campaña | allConversionsByConversionDate | Doble | \$1=, =, <, > | 
| Campaña | allConversionsValueByConversionDate | Doble | \$1=, =, <, > | 
| Campaña | conversionsByConversionDate | Doble | \$1=, =, <, > | 
| Campaña | conversionsValueByConversionDate | Doble | \$1=, =, <, > | 
| Campaña | valuePerAllConversionsByConversionDate | Doble | \$1=, =, <, > | 
| Campaña | valuePerConversionsByConversionDate | Doble | \$1=, =, <, > | 
| Campaña | allConversions | Doble | \$1=, =, <, > | 
| Campaña | absoluteTopImpressionPercentage | Doble | \$1=, =, <, > | 
| Campaña | searchAbsoluteTopImpressionShare | Doble | \$1=, =, <, > | 
| Campaña | averageCpc | Doble | \$1=, =, <, > | 
| Campaña | searchImpressionShare | Doble | \$1=, =, <, > | 
| Campaña | searchTopImpressionShare | Doble | \$1=, =, <, > | 
| Campaña | activeViewCtr | Doble | \$1=, =, <, > | 
| Campaña | ctr | Doble | \$1=, =, <, > | 
| Campaña | relativeCtr | Doble | \$1=, =, <, > | 
| Campaña | updateMask | Cadena |  | 
| Campaña | crear | Struct |  | 
| Campaña | actualización | Struct |  | 
| Presupuesto de campaña | resourceName | Cadena | \$1=, = | 
| Presupuesto de campaña | id | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Presupuesto de campaña | status | Cadena | \$1=, = | 
| Presupuesto de campaña | deliveryMethod | Cadena | \$1=, = | 
| Presupuesto de campaña | periodo | Cadena | \$1=, = | 
| Presupuesto de campaña | type | Cadena | \$1=, = | 
| Presupuesto de campaña | nombre | Cadena | \$1=, =, LIKE | 
| Presupuesto de campaña | amountMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Presupuesto de campaña | explicitlyShared | Booleano | \$1=, = | 
| Presupuesto de campaña | referenceCount | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Presupuesto de campaña | hasRecommendedBudget | Booleano | \$1=, = | 
| Presupuesto de campaña | date | Date | BETWEEN, =, <, >, <=, >= | 
| Presupuesto de campaña | costMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Presupuesto de campaña | startDate | Date | BETWEEN, =, <, >, <=, >= | 
| Presupuesto de campaña | endDate | Date | BETWEEN, =, <, >, <=, >= | 
| Presupuesto de campaña | maximizeConversionValueTargetRoas | Doble | \$1=, =, <, > | 
| Presupuesto de campaña | maximizeConversionsTargetCpaMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Presupuesto de campaña | selectiveOptimizationConversionActions | Cadena |  | 
| Presupuesto de campaña | averageCost | Doble | \$1=, =, <, > | 
| Presupuesto de campaña | costPerAllConversions | Doble | \$1=, =, <, > | 
| Presupuesto de campaña | costPerConversion | Doble | \$1=, =, <, > | 
| Presupuesto de campaña | videoViews | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Presupuesto de campaña | clicks | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Presupuesto de campaña | allConversions | Doble | \$1=, =, <, > | 
| Presupuesto de campaña | valuePerAllConversions | Doble | \$1=, =, <, > | 
| Presupuesto de campaña | averageCpc | Doble | \$1=, =, <, > | 
| Presupuesto de campaña | impresiones | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Presupuesto de campaña | ctr | Doble | \$1=, =, <, > | 
| Presupuesto de campaña | updateMask | Cadena |  | 
| Presupuesto de campaña | crear | Struct |  | 
| Presupuesto de campaña | actualización | Struct |  | 

 **Consultas de partición** 

 Puede proporcionar las opciones adicionales de Spark `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` y `NUM_PARTITIONS` si quiere usar la simultaneidad en Spark. Con estos parámetros, la consulta original se dividiría en un número `NUM_PARTITIONS` de subconsultas que las tareas de Spark pueden ejecutar simultáneamente. 
+  `PARTITION_FIELD`: el nombre del campo que se usará para particionar la consulta. 
+  `LOWER_BOUND`: un valor de límite inferior inclusivo del campo de partición elegido. 

   Para la fecha, aceptamos el formato de fecha de Spark que se usa en las consultas de Spark SQL. Ejemplos de valores válidos: `"2024-02-06"`. 
+  `UPPER_BOUND`: un valor límite superior exclusivo del campo de partición elegido. 
+  `NUM_PARTITIONS`: el número de particiones. 

 Los detalles de compatibilidad del campo de partición por entidad se capturaron en la siguiente tabla. 


| Nombre de la entidad | Campo de partición | Tipo de datos | 
| --- | --- | --- | 
| Anuncio de grupo de anuncios | date | Date | 
| Grupo de anuncios | date | Date | 
| Campaña | date | Date | 
| Presupuesto de campaña | date | Date | 

 **Ejemplo** 

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

# Opciones de conexión a Google Ads
<a name="googleads-connection-options"></a>

Las siguientes son opciones de conexión para Google Ads:
+  `ENTITY_NAME`(cadena): (obligatorio) se utiliza para leer y escribir. El nombre del objeto en Google Ads. 
+  `API_VERSION`(cadena): (obligatorio) se utiliza para leer y escribir. Versión de la API de Rest de Google Ads que desea utilizar. Ejemplo: v16. 
+  `DEVELOPER_TOKEN`(cadena): (obligatorio) se utiliza para leer y escribir. Se requiere para autenticar al desarrollador o a la aplicación que realiza solicitudes a la API. 
+  `MANAGER_ID`(cadena): se utiliza para leer y escribir. Un identificador único que permite administrar varias cuentas de Google Ads. Es el ID de cliente del administrador autorizado. Si el acceso a la cuenta de cliente se realiza a través de una cuenta de administrador, es obligatorio ingresar `MANAGER_ID`. Para obtener más información, consulte [login-customer-id](https://developers.google.com/google-ads/api/docs/concepts/call-structure#cid). 
+  `SELECTED_FIELDS`(lista<Cadena>): predeterminado: empty(SELECT \$1). Se usa para leer. Columnas que desee seleccionar para el objeto. 
+  `FILTER_PREDICATE`(cadena): predeterminado: vacío. Se usa para leer. Debe estar en el formato de Spark SQL. 
+  `QUERY`(cadena): predeterminado: vacío. Se usa para leer. Consulta completa de Spark SQL. 
+  `PARTITION_FIELD`(cadena): se usa para leer. Campo que se utilizará para particionar la consulta. 
+  `LOWER_BOUND`(cadena): se usa para leer. Un valor de límite inferior inclusivo del campo de partición elegido. 
+  `UPPER_BOUND`(cadena): se usa para leer. Un valor límite superior exclusivo del campo de partición elegido. 
+  `NUM_PARTITIONS`(entero): predeterminado: 1. Se usa para leer. Número de particiones para leer. 

# Crear una cuenta de Google Ads
<a name="googleads-create-account"></a>

1.  Inicie sesión en la [cuenta de desarrollador de Google Ads](https://console.cloud.google.com) con sus credenciales y vaya a \$1Mi proyecto.   
![\[En la captura de pantalla se muestra la pantalla de bienvenida para iniciar sesión en la cuenta de desarrollador de Google Ads.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/google-ads-log-in-developer-account.png)

1.  Seleccione **Nuevo proyecto** y proporcione la información necesaria para crear un proyecto de Google si no tiene ninguna aplicación registrada en él.   
![\[En la captura de pantalla se muestra la página de selección de proyecto. Elija Nuevo proyecto en la esquina superior derecha.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/google-ads-new-project.png)  
![\[En la captura de pantalla se muestra la ventana Nuevo proyecto para introducir un nombre de proyecto y elegir una ubicación.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/google-ads-new-project-name-location.png)

1.  Elija la **pestaña de navegación**, luego **API y configuración** y **Crear ID de cliente** y **ClientSecret**, lo que requerirá una configuración adicional para crear una conexión entre AWS Glue y Google Ads. Para obtener más información, consulte [Credenciales de API](https://console.cloud.google.com/apis/credentials).   
![\[En la captura de pantalla se muestra la página de configuración de API y servicios.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/google-ads-apis-and-services.png)

1.  Elija **CREAR CREDENCIALES** y seleccione **ID de cliente de OAuth**.   
![\[En la captura de pantalla se muestra la página de configuración de las API y los servicios con el menú desplegable Crear credenciales y la opción de ID de cliente de OAuth resaltada.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/google-ads-create-credentials.png)

1.  Seleccione **Aplicación web** en **Tipo de aplicación**.   
![\[En la captura de pantalla se muestra la página de creación del ID de cliente de OAuth y el tipo de aplicación como aplicación web.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/google-ads-oauth-client-id-application-type.png)

1.  En **URI de redireccionamiento autorizados**, agregue los URI de redireccionamiento de OAuth y elija **Crear**. Puede agregar varios URI de redireccionamiento si es necesario.   
![\[La captura de pantalla muestra la página de creación de ID de cliente de OAuth y la sección de URI de redireccionamiento autorizados. Aquí, agregue los URI y seleccione AGREGAR URI si es necesario. Cuando haya terminado, elija CREAR.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/google-ads-oauth-redirect-uris.png)

1.  Su **ID de cliente** y su **secreto de cliente** se generarán al crear una conexión entre AWS Glue y Google Ads.   
![\[La captura de pantalla muestra la página de creación de ID de cliente de OAuth y la sección de URI de redireccionamiento autorizados. Aquí, agregue los URI y seleccione AGREGAR URI si es necesario. Cuando haya terminado, elija CREAR.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/google-ads-oauth-client-created.png)

1.  Agregue los ámbitos según las necesidades de su aplicación, seleccione la **pantalla de consentimiento de OAuth** y proporcione la información necesaria y agregue los ámbitos en función de los requisitos.   
![\[En la captura de pantalla se muestra la página de actualización de ámbitos seleccionados. Seleccione los ámbitos según sea necesario.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/google-ads-selected-scopes.png)

# Limitaciones
<a name="googleads-connector-limitations"></a>

Las siguientes son limitaciones para el conector de Google Ads:
+ `MANAGER_ID` es una entrada opcional al crear una conexión. Sin embargo, cuando se quiere acceder a los clientes subyacentes a un administrador concreto, entonces es obligatorio ingresar `MANAGER_ID`. La siguiente tabla explica las limitaciones de acceso en función de si `MANAGER_ID` está incluido o no en una conexión.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/googleads-connector-limitations.html)
+ Cuando se elige una cuenta de administrador como objeto, únicamente aparecerá `Account` como subobjeto. En el conector de Google Ads, las entidades, como campañas, anuncios, etc., se recuperan en función de las cuentas de cliente individuales, no de la cuenta del administrador.
+ No se pueden recuperar métricas para la cuenta de administrador. En su lugar, puede recuperar métricas para cuentas de clientes individuales.
+  Cada cuenta puede tener hasta 10 000 campañas, incluidas las campañas activas y en pausa. Para obtener más información, consulte [Límites de campañas y de grupos de anuncios](https://support.google.com/google-ads/answer/6372658). 
+  Al crear un informe, si selecciona determinadas métricas para mostrarlas, no se mostrará ninguna fila cuyas métricas seleccionadas sean todas cero. Para obtener más información, consulte [Zero Metrics](https://developers.google.com/google-ads/api/docs/reporting/zero-metrics?hl=en#exclude_zero_metrics_by_segmenting). 
+  Con los siguientes campos, el flujo de asignación completa no funcionará para las entidades Cuenta, Grupo de anuncios y Anuncio de grupo de anuncios, específicamente para conversionAction, conversionActionCategory, conversionActionName. Para obtener más información, consulte [Segment and Metrics](https://developers.google.com/google-ads/api/docs/reporting/segmentation?hl=en#selectability_between_segments_and_metrics). 
+ El filtro de intervalo de fechas es obligatorio cuando se selecciona el campo `segments.date`.