

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Connexion à Google Ads
<a name="connecting-to-googleads"></a>

 L’API Google Ads est l’interface programmatique de Google Ads, utilisée pour gérer des comptes et des campagnes Google Ads volumineux ou complexes. Si vous utilisez Google Ads, vous pouvez vous connecter AWS Glue à votre compte Google Ads. Vous pouvez ensuite utiliser Google Ads comme source de données dans vos tâches ETL. Exécutez ces tâches pour transférer des données entre Google Ads et AWS des services ou d'autres applications compatibles. 

**Topics**
+ [AWS Glue support pour Google Ads](googleads-support.md)
+ [Politiques contenant les opérations API pour la création et l’utilisation des connexions](googleads-configuring-iam-permissions.md)
+ [Configuration de Google Ads](googleads-configuring.md)
+ [Configuration des connexions Google Ads](googleads-configuring-connections.md)
+ [Lecture à partir d’entités Google Ads](googleads-reading-from-entities.md)
+ [Options de connexion Google Ads](googleads-connection-options.md)
+ [Création d’un compte Google Ads](googleads-create-account.md)
+ [Limitations](googleads-connector-limitations.md)

# AWS Glue support pour Google Ads
<a name="googleads-support"></a>

AWS Glue prend en charge Google Ads comme suit :

**Prise en charge en tant que source ?**  
Oui. Vous pouvez utiliser les tâches AWS Glue ETL pour interroger les données de Google Ads.

**Prise en charge en tant que cible ?**  
Non.

**Versions de l’API Google Ads prises en charge**  
v18

# Politiques contenant les opérations API pour la création et l’utilisation des connexions
<a name="googleads-configuring-iam-permissions"></a>

 L'exemple de politique suivant décrit les AWS autorisations requises pour créer et utiliser des connexions. Si vous créez un rôle, créez une politique contenant les éléments suivants : 

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

****  

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

------

Vous pouvez également utiliser les politiques IAM gérées suivantes pour autoriser l’accès :
+  [AWSGlueServiceRole](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AWSGlueServiceRole)— Accorde l'accès aux ressources dont AWS Glue les différents processus ont besoin pour s'exécuter en votre nom. Ces ressources incluent AWS Glue Amazon S3, IAM, CloudWatch Logs et Amazon EC2. Si vous suivez la convention de dénomination des ressources spécifiée dans cette politique, AWS Glue les processus disposent des autorisations requises. Cette politique est généralement attachée aux rôles spécifiés lorsque vous définissez les crawlers, les tâches et les points de terminaison de développement. 
+  [AWSGlueConsoleFullAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AWSGlueConsoleFullAccess)— Accorde un accès complet aux AWS Glue ressources lorsqu'une identité à laquelle la politique est attachée utilise la console AWS de gestion. Si vous suivez la convention de dénomination pour les ressources spécifiées dans la politique, les utilisateurs bénéficient des capacités totales de la console. Cette politique s'applique généralement aux utilisateurs de la AWS Glue console. 

# Configuration de Google Ads
<a name="googleads-configuring"></a>

Avant de pouvoir AWS Glue effectuer un transfert depuis Google Ads, vous devez remplir les conditions suivantes :

## Configuration requise
<a name="googleads-configuring-min-requirements"></a>
+  Vous disposez d’un compte Google Ads avec e-mail et mot de passe. Pour plus d’informations sur la création d’un compte, consultez [Creating a Google Ads account](googleads-create-account.md). 
+  Votre compte Google Ads est activé pour accéder à l’API. Toute utilisation de l’API Google Ads est disponible sans frais supplémentaires. 
+  Votre compte Google Ads vous permet d’installer des applications connectées. Si vous n’avez pas accès à cette fonctionnalité, contactez votre administrateur Google Ads. 

 Si vous remplissez ces conditions, vous êtes prêt à vous connecter AWS Glue à votre compte Google Ads. 

# Configuration des connexions Google Ads
<a name="googleads-configuring-connections"></a>

 Google Ads prend en charge les types de `AUTHORIZATION_CODE` subventions pour OAuth2. 

 Ce type de subvention est considéré comme « à trois étapes » OAuth car il repose sur la redirection des utilisateurs vers le serveur d'autorisation tiers pour authentifier l'utilisateur. Il est utilisé lors de la création de connexions via la AWS Glue console. La AWS Glue console redirige l'utilisateur vers Google Ads où il doit se connecter et autoriser AWS Glue les autorisations demandées pour accéder à son instance Google Ads. 

 Les utilisateurs peuvent choisir de créer leur propre application connectée dans Google Ads et de fournir leur propre identifiant client et leur secret client lors de la création de connexions via la AWS Glue console. Dans ce scénario, ils seront toujours redirigés vers Google Ads pour se connecter et autoriser AWS Glue l'accès à leurs ressources. 

 Ce type d’autorisation donne lieu à un jeton d’actualisation et à un jeton d’accès. Le jeton d’accès est de courte durée et peut être actualisé automatiquement sans interaction de l’utilisateur à l’aide du jeton d’actualisation. 

 Pour plus d'informations, consultez la [documentation publique de Google Ads sur la création d'une application connectée pour le OAuth flux de code d'autorisation](https://developers.google.com/workspace/guides/create-credentials). 

Pour configurer une connexion Google Ads :

1.  Dans AWS Secrets Manager, créez un secret avec les informations suivantes. Il est nécessaire de créer un secret pour chaque connexion dans AWS Glue. 

   1.  Pour le type de AuthorizationCode subvention : 
      +  Pour l’application connectée gérée par le client : le secret doit contenir le secret du consommateur de l’application connectée avec `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET` comme clé. 

1. Dans AWS Glue Glue Studio, créez une connexion sous **Data Connections** en suivant les étapes ci-dessous : 

   1. Lorsque vous sélectionnez un **Type de connexion**, sélectionnez Google Ads.

   1. Indiquez l’`developer token` de Google Ads à laquelle vous souhaitez vous connecter.

   1. Indiquez le `MANAGER ID` de Google Ads si vous souhaitez vous connecter en tant que responsable.

   1.  Sélectionnez le rôle IAM qui AWS Glue peut assumer les actions suivantes et qui dispose des autorisations nécessaires pour les actions suivantes : 

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

****  

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

------

   1.  Sélectionnez celui `secretName` que vous souhaitez utiliser pour cette connexion AWS Glue afin d'y placer les jetons. 

   1.  Sélectionnez les options réseau si vous souhaitez utiliser votre réseau. 

1.  Accordez au rôle IAM associé à votre AWS Glue travail l'autorisation de lire`secretName`. 

# Lecture à partir d’entités Google Ads
<a name="googleads-reading-from-entities"></a>

 **Conditions préalables** 
+  Un objet Google Ads à partir duquel vous souhaitez lire. Reportez-vous au tableau des entités prises en charge ci-dessous pour vérifier les entités disponibles. 

 **Entités prises en charge** 


| Entité | Peut être filtré | Limit prise en charge | Order by prise en charge | Select prise en charge\$1 | Partitionnement pris en charge | 
| --- | --- | --- | --- | --- | --- | 
| Ad Group Ad | Oui | Oui | Oui | Non | Oui | 
| Ad Group | Oui | Oui | Oui | Non | Oui | 
| Campaign Budget | Oui | Oui | Oui | Oui | Oui | 
| Account Budget | Oui | Non | Oui | Oui | Non | 
| Campaign | Oui | Oui | Oui | Oui | Oui | 
| Compte | Oui | Non | Oui | Non | Non | 

 **Exemple** 

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

 **Détails des entités et des champs Google Ads** 


| Entité | Champ | Type de données | Opérateurs pris en charge | 
| --- | --- | --- | --- | 
| Compte | resourceName | String | \$1=, = | 
| Compte | callReportingEnabled | Booléen | \$1=, = | 
| Compte | callConversionReportingActivé | Booléen | \$1=, = | 
| Compte | callConversionAction | String | \$1=, = | 
| Compte | conversionTrackingId | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Compte | crossAccountConversionTrackingId | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Compte | payPerConversionEligibilityFailureReasons | List |  | 
| Compte | id | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Compte | currencyCode | String | \$1=, =, LIKE | 
| Compte | timeZone | String | \$1=, =, LIKE | 
| Compte | autoTaggingEnabled | Booléen | \$1=, = | 
| Compte | hasPartnersBadge | Booléen | \$1=, = | 
| Compte | manager | Booléen | \$1=, = | 
| Compte | testAccount | Booléen | \$1=, = | 
| Compte | date | Date | BETWEEN, =, <, >, <=, >= | 
| Compte | costMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Compte | acceptedCustomerDataTermes | Booléen |  | 
| Compte | conversionTrackingStatus | String | \$1=, =, LIKE | 
| Compte | enhancedConversionsForLeadsEnabled | Booléen |  | 
| Compte | googleAdsConversionClient | String |  | 
| Compte | status | String | \$1=, = | 
| Compte | allConversionsByConversionDate | Double | \$1=, =, <, > | 
| Compte | allConversionsValueByConversionDate | Double | \$1=, =, <, > | 
| Compte | conversionsByConversionDate | Double | \$1=, =, <, > | 
| Compte | conversionsValueByConversionDate | Double | \$1=, =, <, > | 
| Compte | valuePerAllConversionsByConversionDate | Double | \$1=, =, <, > | 
| Compte | videoViews | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Compte | clicks | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Compte | invalidClicks | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Compte | costPerAllConversions | Double | \$1=, =, <, > | 
| Compte | costPerConversion | Double | \$1=, =, <, > | 
| Compte | conversions | Double | \$1=, =, <, > | 
| Compte | absoluteTopImpressionPourcentage | Double | \$1=, =, <, > | 
| Compte | impressions | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Compte | topImpressionPercentage | Double | \$1=, =, <, > | 
| Compte | averageCpc | Double | \$1=, =, <, > | 
| Compte | activeViewMeasurableCostMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Compte | averageCost | Double | \$1=, =, <, > | 
| Compte | ctr | Double | \$1=, =, <, > | 
| Compte | activeViewCtr | Double | \$1=, =, <, > | 
| Compte | searchImpressionShare | Double | \$1=, =, <, > | 
| Compte | conversionAction | String | \$1=, = | 
| Compte | conversionActionCategory | String | \$1=, = | 
| Compte | conversionActionName | String | \$1=, =, LIKE | 
| Account Budget | resourceName | String | \$1=, = | 
| Account Budget | status | String | \$1=, = | 
| Account Budget | proposedEndTimeType | String | \$1=, = | 
| Account Budget | approvedEndTimeType | String | \$1=, = | 
| Account Budget | id | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Account Budget | billingSetup | String | \$1=, = | 
| Account Budget | name | String | \$1=, =, LIKE | 
| Account Budget | approvedStartDateHeure |  DateTime | BETWEEN, =, <, >, <=, >= | 
| Account Budget | proposedSpendingLimitMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Account Budget | approvedSpendingLimitMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Account Budget | adjustedSpendingLimitMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Account Budget | amountServedMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Ad Group | resourceName | String | \$1=, =, LIKE | 
| Ad Group | status | String | \$1=, =, LIKE | 
| Ad Group | type | String | \$1=, =, LIKE | 
| Ad Group | id | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Ad Group | name | String | \$1=, =, LIKE | 
| Ad Group | campaign | String | \$1=, = | 
| Ad Group | cpcBidMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Ad Group | targetCpaMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Ad Group | cpmBidMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Ad Group | cpvBidMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Ad Group | targetCpmMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Ad Group | effectiveTargetCpaMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Ad Group | date | Date | BETWEEN, =, <, >, <=, >= | 
| Ad Group | costMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Ad Group | useAudienceGrouped | Booléen | \$1=, = | 
| Ad Group | effectiveCpcBidMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Ad Group | allConversionsByConversionDate | Double | \$1=, =, <, > | 
| Ad Group | allConversionsValueByConversionDate | Double | \$1=, =, <, > | 
| Ad Group | conversionsByConversionDate | Double | \$1=, =, <, > | 
| Ad Group | conversionsValueByConversionDate | Double | \$1=, =, <, > | 
| Ad Group | valuePerAllConversionsByConversionDate | Double | \$1=, =, <, > | 
| Ad Group | valuePerConversionsByConversionDate | Double | \$1=, =, <, > | 
| Ad Group | averageCost | Double | \$1=, =, <, > | 
| Ad Group | costPerAllConversions | Double | \$1=, =, <, > | 
| Ad Group | costPerConversion | Double | \$1=, =, <, > | 
| Ad Group | averagePageViews | Double | \$1=, =, <, > | 
| Ad Group | videoViews | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Ad Group | clicks | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Ad Group | allConversions | Double | \$1=, =, <, > | 
| Ad Group | averageCpc | Double | \$1=, =, <, > | 
| Ad Group | absoluteTopImpressionPourcentage | Double | \$1=, =, <, > | 
| Ad Group | impressions | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Ad Group | topImpressionPercentage | Double | \$1=, =, <, > | 
| Ad Group | activeViewCtr | Double | \$1=, =, <, > | 
| Ad Group | ctr | Double | \$1=, =, <, > | 
| Ad Group | searchTopImpressionPartagez | Double | \$1=, =, <, > | 
| Ad Group | searchImpressionShare | Double | \$1=, =, <, > | 
| Ad Group | searchAbsoluteTopImpressionShare | Double | \$1=, =, <, > | 
| Ad Group | relativeCtr | Double | \$1=, =, <, > | 
| Ad Group | conversionAction | String | \$1=, = | 
| Ad Group | conversionActionCategory | String | \$1=, = | 
| Ad Group | conversionActionName | String | \$1=, =, LIKE | 
| Ad Group | updateMask | String |  | 
| Ad Group | créer | Struct |  | 
| Ad Group | mise à jour | Struct |  | 
| Ad Group | primaryStatus | String | \$1=, = | 
| Ad Group | primaryStatusReasons | List |  | 
| Ad Group Ad | resourceName | String | \$1=, = | 
| Ad Group Ad | id | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Ad Group Ad | status | String | \$1=, = | 
| Ad Group Ad | labels | List |  | 
| Ad Group Ad | adGroup | String | \$1=, = | 
| Ad Group Ad | costMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Ad Group Ad | approvalStatus | String | \$1=, = | 
| Ad Group Ad | reviewStatus | String | \$1=, = | 
| Ad Group Ad | adStrength | String | \$1=, = | 
| Ad Group Ad | type | String | \$1=, = | 
| Ad Group Ad | businessName | String | \$1=, =, LIKE | 
| Ad Group Ad | date | Date | BETWEEN, =, <, >, <=, >= | 
| Ad Group Ad | allConversionsByConversionDate | Double | \$1=, =, <, > | 
| Ad Group Ad | allConversionsValueByConversionDate | Double | \$1=, =, <, > | 
| Ad Group Ad | conversionsByConversionDate | Double | \$1=, =, <, > | 
| Ad Group Ad | conversionsValueByConversionDate | Double | \$1=, =, <, > | 
| Ad Group Ad | valuePerAllConversionsByConversionDate | Double | \$1=, =, <, > | 
| Ad Group Ad | valuePerConversionsByConversionDate | Double | \$1=, =, <, > | 
| Ad Group Ad | activeViewMeasurableCostMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Ad Group Ad | averageCost | Double | \$1=, =, <, > | 
| Ad Group Ad | costPerAllConversions | Double | \$1=, =, <, > | 
| Ad Group Ad | costPerConversion | Double | \$1=, =, <, > | 
| Ad Group Ad | clicks | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Ad Group Ad | averagePageViews | Double | \$1=, =, <, > | 
| Ad Group Ad | videoViews | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Ad Group Ad | allConversions | Double | \$1=, =, <, > | 
| Ad Group Ad | averageCpc | Double | \$1=, =, <, > | 
| Ad Group Ad | topImpressionPercentage | Double | \$1=, =, <, > | 
| Ad Group Ad | impressions | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Ad Group Ad | absoluteTopImpressionPourcentage | Double | \$1=, =, <, > | 
| Ad Group Ad | activeViewCtr | Double | \$1=, =, <, > | 
| Ad Group Ad | ctr | Double | \$1=, =, <, > | 
| Ad Group Ad | conversionAction | String | \$1=, = | 
| Ad Group Ad | conversionActionCategory | String | \$1=, = | 
| Ad Group Ad | conversionActionName | String | \$1=, =, LIKE | 
| Ad Group Ad | updateMask | String |  | 
| Ad Group Ad | créer | Struct |  | 
| Ad Group Ad | mise à jour | Struct |  | 
| Ad Group Ad | policyValidationParameter | Struct |  | 
| Ad Group Ad | primaryStatus | String | \$1=, = | 
| Ad Group Ad | primaryStatusReasons | List |  | 
| Campaign | resourceName | String | \$1=, = | 
| Campaign | status | String | \$1=, = | 
| Campaign | baseCampaign | String | \$1=, = | 
| Campaign | name | String | \$1=, =, LIKE | 
| Campaign | id | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Campaign | campaignBudget | String | \$1=, =, LIKE | 
| Campaign | startDate | Date | BETWEEN, =, <, >, <=, >= | 
| Campaign | endDate | Date | BETWEEN, =, <, >, <=, >= | 
| Campaign | adServingOptimizationÉtat | 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 | useSuppliedUrlsUniquement | Booléen | \$1=, = | 
| Campaign | positiveGeoTargetType | String | \$1=, = | 
| Campaign | negativeGeoTargetType | String | \$1=, = | 
| Campaign | paymentMode | String | \$1=, = | 
| Campaign | optimizationGoalTypes | List |  | 
| Campaign | date | Date | BETWEEN, =, <, >, <=, >= | 
| Campaign | averageCost | Double |  | 
| Campaign | clicks | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Campaign | costMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Campaign | impressions | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Campaign | useAudienceGrouped | Booléen | \$1=, = | 
| Campaign | activeViewMeasurableCostMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Campaign | costPerAllConversions | Double | \$1=, =, <, > | 
| Campaign | costPerConversion | Double | \$1=, =, <, > | 
| Campaign | invalidClicks | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Campaign | publisherPurchasedClicks | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Campaign | averagePageViews | Double | \$1=, =, <, > | 
| Campaign | videoViews | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Campaign | allConversionsByConversionDate | Double | \$1=, =, <, > | 
| Campaign | allConversionsValueByConversionDate | Double | \$1=, =, <, > | 
| Campaign | conversionsByConversionDate | Double | \$1=, =, <, > | 
| Campaign | conversionsValueByConversionDate | Double | \$1=, =, <, > | 
| Campaign | valuePerAllConversionsByConversionDate | Double | \$1=, =, <, > | 
| Campaign | valuePerConversionsByConversionDate | Double | \$1=, =, <, > | 
| Campaign | allConversions | Double | \$1=, =, <, > | 
| Campaign | absoluteTopImpressionPourcentage | Double | \$1=, =, <, > | 
| Campaign | searchAbsoluteTopImpressionShare | Double | \$1=, =, <, > | 
| Campaign | averageCpc | Double | \$1=, =, <, > | 
| Campaign | searchImpressionShare | Double | \$1=, =, <, > | 
| Campaign | searchTopImpressionPartagez | Double | \$1=, =, <, > | 
| Campaign | activeViewCtr | Double | \$1=, =, <, > | 
| Campaign | ctr | Double | \$1=, =, <, > | 
| Campaign | relativeCtr | Double | \$1=, =, <, > | 
| Campaign | updateMask | String |  | 
| Campaign | créer | Struct |  | 
| Campaign | mise à jour | Struct |  | 
| Campaign Budget | resourceName | String | \$1=, = | 
| Campaign Budget | id | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Campaign Budget | status | String | \$1=, = | 
| Campaign Budget | deliveryMethod | String | \$1=, = | 
| Campaign Budget | point | String | \$1=, = | 
| Campaign Budget | type | String | \$1=, = | 
| Campaign Budget | name | String | \$1=, =, LIKE | 
| Campaign Budget | amountMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Campaign Budget | explicitlyShared | Booléen | \$1=, = | 
| Campaign Budget | referenceCount | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Campaign Budget | hasRecommendedBudget | Booléen | \$1=, = | 
| Campaign Budget | date | Date | BETWEEN, =, <, >, <=, >= | 
| Campaign Budget | costMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Campaign Budget | startDate | Date | BETWEEN, =, <, >, <=, >= | 
| Campaign Budget | endDate | Date | BETWEEN, =, <, >, <=, >= | 
| Campaign Budget | maximizeConversionValueTargetRoas | Double | \$1=, =, <, > | 
| Campaign Budget | maximizeConversionsTargetCpaMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Campaign Budget | selectiveOptimizationConversionActions | String |  | 
| Campaign Budget | averageCost | Double | \$1=, =, <, > | 
| Campaign Budget | costPerAllConversions | Double | \$1=, =, <, > | 
| Campaign Budget | costPerConversion | Double | \$1=, =, <, > | 
| Campaign Budget | videoViews | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Campaign Budget | clicks | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Campaign Budget | allConversions | Double | \$1=, =, <, > | 
| Campaign Budget | valuePerAllConversions | Double | \$1=, =, <, > | 
| Campaign Budget | averageCpc | Double | \$1=, =, <, > | 
| Campaign Budget | impressions | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Campaign Budget | ctr | Double | \$1=, =, <, > | 
| Campaign Budget | updateMask | String |  | 
| Campaign Budget | créer | Struct |  | 
| Campaign Budget | mise à jour | Struct |  | 

 **Requêtes de partitionnement** 

 Les options Spark supplémentaires `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` et `NUM_PARTITIONS` peuvent être indiquées si vous souhaitez utiliser la simultanéité dans Spark. Avec ces paramètres, la requête d’origine serait divisée en `NUM_PARTITIONS` nombres de sous-requêtes pouvant être exécutées simultanément par les tâches Spark. 
+  `PARTITION_FIELD` : le nom du champ à utiliser pour partitionner la requête. 
+  `LOWER_BOUND` : une valeur limite inférieure inclusive du champ de partition choisi. 

   Pour le champ Date, nous acceptons le format de date Spark utilisé dans les requêtes SQL Spark. Exemples de valeurs valides : `"2024-02-06"`. 
+  `UPPER_BOUND` : une valeur limite supérieure exclusive du champ de partition choisi. 
+  `NUM_PARTITIONS` : nombre de partitions. 

 Les détails relatifs à la prise en charge des champs de partitionnement par entité sont présentés dans le tableau suivant. 


| Nom de l'entité | Champ de partitionnement | Type de données | 
| --- | --- | --- | 
| Ad Group Ad | date | Date | 
| Ad Group | date | Date | 
| Campaign | date | Date | 
| Campaign Budget | date | Date | 

 **Exemple** 

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

# Options de connexion Google Ads
<a name="googleads-connection-options"></a>

Les options de connexion pour Google Ads sont les suivantes :
+  `ENTITY_NAME`(Chaîne) - (Obligatoire) Utilisé pour la lecture/l’écriture. Le nom de votre objet dans Google Ads. 
+  `API_VERSION`(Chaîne) - (Obligatoire) Utilisé pour la lecture/l’écriture. Version d’API Rest Google Ads que vous souhaitez utiliser. Exemple : v16. 
+  `DEVELOPER_TOKEN`(Chaîne) - (Obligatoire) Utilisé pour la lecture/l’écriture. Nécessaire d’authentifier le développeur ou l’application qui envoie des demandes à l’API. 
+  `MANAGER_ID`(Chaîne) : utilisé pour la lecture/l’écriture. Identifiant unique qui vous permet de gérer plusieurs comptes Google Ads. Il s’agit de l’identifiant client du responsable autorisé. Si vous accédez au compte client par le biais d’un compte de gestion, le `MANAGER_ID` est obligatoire. Pour de plus amples informations, veuillez consulter [login-customer-id](https://developers.google.com/google-ads/api/docs/concepts/call-structure#cid). 
+  `SELECTED_FIELDS`(Liste<Chaîne>) - Par défaut : vide (SELECT \$1). Utilisé pour la lecture. Colonnes que vous souhaitez sélectionner pour l’objet. 
+  `FILTER_PREDICATE`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Doit être au format SQL Spark. 
+  `QUERY`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Requête Spark SQL complète. 
+  `PARTITION_FIELD`(Chaîne) - Utilisé pour la lecture. Champ à utiliser pour partitionner la requête. 
+  `LOWER_BOUND`(Chaîne) - Utilisé pour la lecture. Une valeur limite inférieure inclusive du champ de partition choisi. 
+  `UPPER_BOUND`(Chaîne) - Utilisé pour la lecture. Une valeur limite supérieure exclusive du champ de partition choisi. 
+  `NUM_PARTITIONS`(Entier) - Par défaut : 1. Utilisé pour la lecture. Nombre de partitions pour la lecture. 

# Création d’un compte Google Ads
<a name="googleads-create-account"></a>

1.  Connectez-vous au [compte de développeur Google Ads](https://console.cloud.google.com) à l'aide de vos informations d'identification, puis accédez à \$1MyProject.   
![\[La capture d’écran montre l’écran de bienvenue permettant de se connecter au compte de développeur Google Ads.\]](http://docs.aws.amazon.com/fr_fr/glue/latest/dg/images/google-ads-log-in-developer-account.png)

1.  Choisissez **Nouveau projet** et fournissez les informations requises pour créer un projet Google si aucune application n’y est enregistrée.   
![\[La capture d’écran montre la page Sélectionner un projet. Choisissez Nouveau projet dans le coin supérieur droit.\]](http://docs.aws.amazon.com/fr_fr/glue/latest/dg/images/google-ads-new-project.png)  
![\[La capture d’écran montre la fenêtre Nouveau projet qui permet de saisir un nom de projet et de choisir un emplacement.\]](http://docs.aws.amazon.com/fr_fr/glue/latest/dg/images/google-ads-new-project-name-location.png)

1.  Choisissez l'**onglet Navigation**, puis **API et paramètres**, et **Créer un identifiant client**, **ClientSecret**qui nécessitera une configuration supplémentaire pour créer une connexion entre AWS Glue et GoogleAds. Pour en savoir plus, consultez [Informations d’identification de l’API](https://console.cloud.google.com/apis/credentials).   
![\[La capture d'écran montre la page de configuration des services APIs et.\]](http://docs.aws.amazon.com/fr_fr/glue/latest/dg/images/google-ads-apis-and-services.png)

1.  Choisissez **CREATE CREDENTIALS** et choisissez l'**ID OAuth client**.   
![\[La capture d'écran montre la page de configuration APIs et des services avec le menu déroulant Créer des informations d'identification et l'option d'identification du client Oauth surlignée.\]](http://docs.aws.amazon.com/fr_fr/glue/latest/dg/images/google-ads-create-credentials.png)

1.  Sélectionnez **Application Web** comme **Type d’application**.   
![\[La capture d'écran montre la page Créer un identifiant OAuth client et le type d'application en tant qu'application Web.\]](http://docs.aws.amazon.com/fr_fr/glue/latest/dg/images/google-ads-oauth-client-id-application-type.png)

1.  Sous **Redirection autorisée URIs**, ajoutez la OAuth redirection URIs et choisissez **Créer**. Vous pouvez ajouter plusieurs redirections URIs si nécessaire.   
![\[La capture d'écran montre la page Créer un identifiant OAuth client et la URIs section de redirection autorisée. Ici, ajoutez l'URI URIs et choisissez AJOUTER un URI si nécessaire. Choisissez CRÉER une fois que vous avez terminé.\]](http://docs.aws.amazon.com/fr_fr/glue/latest/dg/images/google-ads-oauth-redirect-uris.png)

1.  Votre **identifiant client** et votre **secret client** seront générés lors de la création d'une connexion entre AWS Glue et Google Ads.   
![\[La capture d'écran montre la page Créer un identifiant OAuth client et la URIs section de redirection autorisée. Ici, ajoutez l'URI URIs et choisissez AJOUTER un URI si nécessaire. Choisissez CRÉER une fois que vous avez terminé.\]](http://docs.aws.amazon.com/fr_fr/glue/latest/dg/images/google-ads-oauth-client-created.png)

1.  Ajoutez les portées en fonction des besoins de votre application, choisissez **l'écran de OAuth consentement**, fournissez les informations requises et ajoutez les portées en fonction des exigences.   
![\[La capture d’écran montre la page Mettre à jour les portées sélectionnées. Sélectionnez vos portées selon vos besoins.\]](http://docs.aws.amazon.com/fr_fr/glue/latest/dg/images/google-ads-selected-scopes.png)

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

Les restrictions du connecteur Google Ads sont les suivantes :
+ `MANAGER_ID` est une entrée facultative lors de la création d’une connexion. Cependant, lorsque vous souhaitez accéder aux clients sous-jacents à un gestionnaire en particulier, `MANAGER_ID` est alors une entrée obligatoire. Le tableau ci-dessous explique les restrictions d’accès selon que `MANAGER_ID` est inclus ou non dans une connexion.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/glue/latest/dg/googleads-connector-limitations.html)
+ Lorsqu’un compte de gestion est choisi comme objet, seul `Account` s’affichera comme sous-objet. Dans le connecteur Google Ads, les entités telles que les campagnes, les publicités, etc., sont extraites en fonction des comptes client individuels, et non du compte de gestion.
+ Vous ne pouvez pas extraire les métriques pour le compte de gestion. Vous pouvez plutôt extraire des métriques pour des comptes client individuels.
+  Chaque compte peut avoir jusqu’à 10 000 campagnes, y compris des campagnes actives et en suspens. Pour plus d’informations, consultez [Campagne par compte](https://support.google.com/google-ads/answer/6372658). 
+  Lorsque vous créez un rapport, si vous choisissez d’afficher certaines métriques, les lignes dont les métriques sélectionnées sont toutes nulles ne seront pas renvoyées. Pour plus d’informations, consultez [Zéro métrique](https://developers.google.com/google-ads/api/docs/reporting/zero-metrics?hl=en#exclude_zero_metrics_by_segmenting). 
+  Avec les champs suivants, le flux de mappage complet ne fonctionnera pas pour les entités Account, Ad Group et Ad Group Ad Group Ad, en particulier pour ConversionAction,, conversionActionCategory. conversionActionName Pour plus d’informations, consultez [Segment et métriques](https://developers.google.com/google-ads/api/docs/reporting/segmentation?hl=en#selectability_between_segments_and_metrics). 
+ Un filtre de plage de dates est obligatoire lorsque le champ `segments.date` est sélectionné.