

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 Sheets
<a name="connecting-to-googlesheets"></a>

 Google Sheets est un tableur en ligne qui vous permet d'organiser de grandes quantités de données, de créer des rapports personnalisés, d'automatiser les calculs et de collaborer avec d'autres personnes. Si vous utilisez Google Sheets, vous pouvez vous connecter AWS Glue à votre compte Google Sheets. Vous pouvez ensuite utiliser Google Sheets comme source de données dans vos tâches ETL. Exécutez ces tâches pour transférer des données entre Google Sheets et AWS des services ou d'autres applications compatibles. 

**Topics**
+ [AWS Glue support pour Google Sheets](googlesheets-support.md)
+ [Politiques contenant les opérations API pour la création et l’utilisation des connexions](googlesheets-configuring-iam-permissions.md)
+ [Configuration de Google Sheets](googlesheets-configuring.md)
+ [Configuration des connexions Google Sheets](googlesheets-configuring-connections.md)
+ [Lecture à partir d’entités Google Sheets](googlesheets-reading-from-entities.md)
+ [Options de connexion Google Sheets](googlesheets-connection-options.md)
+ [Configurer le OAuth flux de code d'autorisation pour Google Sheets](googlesheets-oauth-authorization.md)
+ [Restrictions du connecteur Google Sheets](googlesheets-connector-limitations.md)

# AWS Glue support pour Google Sheets
<a name="googlesheets-support"></a>

AWS Glue prend en charge Google Sheets 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 Sheets.

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

**Versions de l’API Google Sheets prises en charge**  
 API Google Sheets v4 et API Google Drive v3 

# Politiques contenant les opérations API pour la création et l’utilisation des connexions
<a name="googlesheets-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 Sheets
<a name="googlesheets-configuring"></a>

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

## Configuration requise
<a name="googlesheets-configuring-min-requirements"></a>
+ Vous disposez d’un compte Google Sheets avec e-mail et mot de passe.
+  Votre compte Google Sheets est activé pour accéder à l’API. Toute utilisation de l’API Google Sheets est disponible sans frais supplémentaires. 
+  Votre compte Google Sheets vous permet d’installer des applications connectées. Si vous n’avez pas accès à cette fonctionnalité, contactez votre administrateur Google Sheets. 

 Si vous répondez à ces exigences, vous êtes prêt à vous connecter AWS Glue à votre compte Google Sheets. 

# Configuration des connexions Google Sheets
<a name="googlesheets-configuring-connections"></a>

Pour configurer une connexion à Google Sheet :

1. Dans AWS Secrets Manager, créez un secret avec les informations suivantes : 

   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 une **source de données**, sélectionnez Google Sheets.

   1. Indiquez l’environnement Google Sheets.

      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`. 

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

****  

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

------

 **Type d’autorisation AUTHORIZATION\$1CODE** 

 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 Sheets où il doit se connecter et autoriser AWS Glue les autorisations demandées pour accéder à son instance Google Sheets. 

 Les utilisateurs peuvent choisir de créer leur propre application connectée dans Google Sheets et de fournir leur propre identifiant client et leur propre 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 Sheets 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 Sheets 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). 

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

 **Conditions préalables** 
+  Un Google SpreadSheet que vous aimeriez lire. Vous aurez besoin de l' SpreadSheet ID et du TabName de la feuille de calcul. 

 **Détails des entités et des champs Google Sheets :** 


| Entité | Type de données | Opérateurs pris en charge | 
| --- | --- | --- | 
| Feuille de calcul | String | N/A (le filtre n’est pas pris en charge) | 

 **Exemple** 

```
googleSheets_read = glueContext.create_dynamic_frame.from_options(
    connection_type="googlesheets",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "{SpreadSheetID}#{SheetTabName}",
        "API_VERSION": "v4"
    }
```

 **Requêtes de partitionnement** 

 Pour Record Base Partitioning uniquement, vous pouvez fournir `NUM_PARTITIONS` en tant qu’options Spark supplémentaires si vous souhaitez utiliser la simultanéité dans Spark. Avec ce paramètre, 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. 

 **Exemple avec `NUM_PARTITIONS`** 

```
googlesheets_read = glueContext.create_dynamic_frame.from_options(
    connection_type="googlesheets",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "{SpreadSheetID}#{SheetTabName}",
        "API_VERSION": "v4",
        "NUM_PARTITIONS": "10"
    }
```

# Options de connexion Google Sheets
<a name="googlesheets-connection-options"></a>

Les options de connexion pour Google Sheets sont les suivantes :
+  `ENTITY_NAME`(Chaîne) - (Obligatoire) Utilisé pour la lecture. Les éléments `SpreadSheet ID` et `sheetTabName` dans Google Sheets. Exemple: `{SpreadSheetID}#{SheetTabName}`. 
+  `API_VERSION`(Chaîne) - (Obligatoire) Utilisé pour la lecture. Version d’API Rest Google Sheets que vous souhaitez utiliser. 
+  `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. 
+  `NUM_PARTITIONS`(Entier) - Par défaut : 1. Utilisé pour la lecture. Nombre de partitions pour la lecture. 

# Configurer le OAuth flux de code d'autorisation pour Google Sheets
<a name="googlesheets-oauth-authorization"></a>

 **Conditions préalables** 
+  Un compte Google auquel vous pouvez vous connecter pour utiliser l’application Google Sheets. Dans votre compte Google, Google Sheets contient les données que vous souhaitez transférer. 
+  Un compte Google Cloud Platform et un projet Google Cloud. Consultez [Create Google Cloud Project](https://developers.google.com/workspace/guides/create-project) pour plus de détails. 

**Pour configurer votre compte Google et obtenir des informations d'identification OAuth 2.0 :**

1.  Une fois le projet Google Cloud configuré, activez l'API Google Sheets et Google Drive APIs dans le projet. Pour connaître les étapes permettant de les activer, consultez la section [Activer et désactiver APIs](https://support.google.com/googleapi/answer/6158841) dans l'aide de la console API pour Google Cloud Platform. 

1.  Configurez ensuite un écran de OAuth consentement pour les utilisateurs externes. Pour plus d'informations sur l'écran de OAuth consentement, consultez la section [Configuration de votre écran de OAuth consentement](https://support.google.com/cloud/answer/10311615#) dans l'aide de la console Google Cloud Platform. 

1.  Dans l'écran de OAuth consentement, ajoutez les champs d'application suivants : 
   +  [Le champ d’application en lecture seule de l’API Google Sheets](https://www.googleapis.com/auth/spreadsheets.readonly) 
   +  [Le champ d’application en lecture seule de l’API Google Drive](ttps://www.googleapis.com/auth/drive.readonly) 

    Pour plus d'informations sur ces étendues, consultez la section [Scopes OAuth 2.0 pour Google APIs](https://developers.google.com/identity/protocols/oauth2/scopes) dans la documentation de Google Identity. 

1.  Générez un identifiant client OAuth 2.0 et un secret. Pour connaître les étapes de création de cet ID client, consultez la section [Configuration de la OAuth version 2.0](https://support.google.com/cloud/answer/6158849?hl=en#zippy=) dans l'aide de la console Google Cloud Platform. 

    L'ID client OAuth 2.0 doit comporter une ou plusieurs redirections autorisées URLs. 

    URLs Les redirections ont le format suivant : 
   + https ://<aws-region>.console.aws.amazon. com/gluestudio/oauth 

1.  Notez l'ID client et le secret du client dans les paramètres de votre ID client OAuth 2.0. 

# Restrictions du connecteur Google Sheets
<a name="googlesheets-connector-limitations"></a>

Les restrictions du connecteur Google Sheets sont les suivantes :
+  Le connecteur Google Sheets ne prend pas en charge les filtres. Par conséquent, le partitionnement basé sur des filtres n’est pas pris en charge. 
+  Dans Record Base Partitioning, aucune disposition ne permet de renvoyer le nombre exact d’enregistrements par SAAS. Par conséquent, il peut exister des scénarios dans lesquels des fichiers contenant des enregistrements vides sont créés.
+  Étant donné que le connecteur Google Sheets ne prend pas en charge le partitionnement basé sur des filtres, `partitionField`, `lowerbound` et `upperbound` ne sont pas des options de connexion valides. Si ces options sont fournies, la AWS Glue tâche est censée échouer. 
+  Il est essentiel de désigner la première ligne de la feuille comme ligne d’en-tête pour éviter les problèmes de traitement des données. 
  +  Si elle n’est pas fournie, la ligne d’en-tête sera remplacée par `Unnamed:1`, `Unnamed:2`, `Unnamed:3`, etc., si la feuille contient des données dont la première ligne est vide. 
  +  Si une ligne d’en-tête est fournie, les noms de colonnes vides seront remplacés par `Unnamed:<number of column>`. Par exemple, si la ligne d’en-tête est `['ColumnName1', 'ColumnName2', '', '', 'ColumnName5', 'ColumnName6']`, elle deviendra `['ColumnName1', 'ColumnName2', 'Unnamed:3', 'Unnamed:4', 'ColumnName5', 'ColumnName6'].` 
+  Le connecteur Google Sheets ne prend pas en charge le transfert incrémentiel. 
+  Le connecteur Google Sheets ne prend en charge que le type de données String. 
+  Les en-têtes dupliqués d’une feuille seront renommés de manière itérative avec un suffixe numérique. Les noms d’en-tête fournis par l’utilisateur auront priorité lors du changement de nom des en-têtes dupliqués. Par exemple, si la ligne d’en-tête est ["Name", "", "Name", null, "Unnamed:6", ""], elle deviendra : ["Name", "Unnamed:2", "Name1", "Unnamed:4", "Unnamed:6", "Unnamed:61"]. 
+  Le connecteur Google Sheets ne prend pas en charge les espaces pour un élément tabName. 
+  Un nom de dossier ne peut pas contenir les caractères spéciaux suivants : 
  + \$1
  + /