

# Conexión a Google Sheets
<a name="connecting-to-googlesheets"></a>

 Google Sheets es un software de hojas de cálculo en línea que le permite organizar grandes cantidades de datos, crear informes personalizados, automatizar cálculos y colaborar con otras personas. Si es usuario de Google Sheets, puede conectar AWS Glue a la cuenta de Google Sheets. Luego, podrá usar Google Sheets como origen de datos en los trabajos de ETL. Ejecute estos trabajos para transferir datos entre Google Sheets y los servicios de AWS u otras aplicaciones compatibles. 

**Topics**
+ [Compatibilidad de AWS Glue con Google Sheets](googlesheets-support.md)
+ [Políticas que contienen las operaciones de la API para crear y usar conexiones](googlesheets-configuring-iam-permissions.md)
+ [Configuración de Google Sheets](googlesheets-configuring.md)
+ [Configuración de las conexiones a Google Sheets](googlesheets-configuring-connections.md)
+ [Cómo leer de entidades de Google Sheets](googlesheets-reading-from-entities.md)
+ [Opciones de conexión de Google Sheets](googlesheets-connection-options.md)
+ [Configurar el flujo de OAuth del código de autorización para Google Sheets](googlesheets-oauth-authorization.md)
+ [Limitaciones del conector de Google Sheets](googlesheets-connector-limitations.md)

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

AWS Glue es compatible con Sheets de la siguiente manera:

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

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

**Versiones de la API de Sheets compatibles**  
 API de Google Sheets versión 4 y API de Google Drive versión 3 

# Políticas que contienen las operaciones de la API para crear y usar conexiones
<a name="googlesheets-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 Sheets
<a name="googlesheets-configuring"></a>

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

## Requisitos mínimos
<a name="googlesheets-configuring-min-requirements"></a>
+ Tener una cuenta de Google Sheets con correo electrónico y contraseña.
+  La cuenta de Google Sheets debe estar habilitada para el acceso de API. La API de Google Sheets se puede utilizar sin ningún costo adicional. 
+  Su cuenta de Google Sheets le permite instalar aplicaciones conectadas. Si no tiene acceso a esta funcionalidad, contacte con su administrador de Google Sheets. 

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

# Configuración de las conexiones a Google Sheets
<a name="googlesheets-configuring-connections"></a>

Para configurar una conexión a Google Sheets:

1. En AWS Secrets Manager, cree un secreto con los siguientes detalles: 

   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. Al seleccionar un **Origen de datos**, elija Google Sheets.

   1. Proporcione el entorno de Google Sheets.

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

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

****  

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

------

 **Tipo de concesión AUTHORIZATION\$1CODE** 

 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 Sheets, donde deberá iniciar sesión y conceder a AWS Glue los permisos solicitados para acceder a la instancia de Google Sheets. 

 Los usuarios pueden optar por crear su propia aplicación conectada en Google Sheets 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 Sheets 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 Sheets sobre la creación de una aplicación conectada para el flujo Authorization Code OAuth](https://developers.google.com/workspace/guides/create-credentials). 

# Cómo leer de entidades de Google Sheets
<a name="googlesheets-reading-from-entities"></a>

 **Requisitos previos** 
+  Una hoja de cálculo de Google desde la que desee leer. Necesitará el ID de la hoja de cálculo y el nombre de la pestaña de la hoja de cálculo. 

 **Detalles de entidades y campos de Google Sheets:** 


| Entidad | Tipo de datos | Operadores admitidos | 
| --- | --- | --- | 
| Hoja de cálculo | Cadena | N/A (no se admite el filtrado) | 

 **Ejemplo** 

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

 **Consultas de partición** 

 Únicamente para la partición basada en registros, `NUM_PARTITIONS` se pueden proporcionar como opciones adicionales de Spark si desea utilizar la simultaneidad en Spark. Con estos parámetros, la consulta original se dividiría en `NUM_PARTITIONS` subconsultas que las tareas de Spark pueden ejecutar simultáneamente. 

 **Ejemplo con `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"
    }
```

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

Las siguientes son opciones de conexión para Google Sheets:
+  `ENTITY_NAME`(cadena): (obligatorio) se usa para lectura. El `SpreadSheet ID` y el `sheetTabName` en Google Sheets. Ejemplo: `{SpreadSheetID}#{SheetTabName}`. 
+  `API_VERSION`(cadena): (obligatorio) se usa para lectura. Versión de la API de Rest de Google Sheets que desea utilizar. 
+  `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. 
+  `NUM_PARTITIONS`(entero): predeterminado: 1. Se usa para leer. Número de particiones para leer. 

# Configurar el flujo de OAuth del código de autorización para Google Sheets
<a name="googlesheets-oauth-authorization"></a>

 **Requisitos previos** 
+  Una cuenta de Google en la que puede iniciar sesión para usar la aplicación Google Sheets. En su cuenta de Google, Google Sheets contiene los datos que desea transferir. 
+  Una cuenta de Google Cloud Platform y un proyecto de Google Cloud. Consulte [Crear un proyecto de Google Cloud](https://developers.google.com/workspace/guides/create-project) para obtener más información. 

**Para configurar su cuenta de Google y obtener las credenciales de OAuth 2.0:**

1.  Una vez configurado el proyecto de Google Cloud, habilite las API de Google Sheets y Google Drive en el proyecto. Para ver los pasos para habilitarlas, consulte [Habilitar y deshabilitar las API](https://support.google.com/googleapi/answer/6158841) en la ayuda de la consola de API de Google Cloud Platform. 

1.  A continuación, configure una pantalla de consentimiento de OAuth para usuarios externos. Para obtener más información acerca de la pantalla de consentimiento de OAuth, consulte [Configuración de la pantalla de consentimiento de OAuth](https://support.google.com/cloud/answer/10311615#) en la Ayuda de la Consola de Google Cloud Platform. 

1.  En la pantalla de consentimiento de OAuth, agregue los siguientes ámbitos: 
   +  [El ámbito de solo lectura de la API de Google Sheets](https://www.googleapis.com/auth/spreadsheets.readonly) 
   +  [El ámbito de solo lectura de la API de Google Drive](ttps://www.googleapis.com/auth/drive.readonly) 

    Para obtener más información sobre estos ámbitos, consulte [Ámbitos de OAuth 2.0 para las API de Google](https://developers.google.com/identity/protocols/oauth2/scopes) en la documentación de Google Identity. 

1.  Genere el ID y el secreto del cliente de OAuth 2.0. Para obtener información acerca de los pasos para crear este ID de cliente, consulte [Configuración de OAuth 2.0](https://support.google.com/cloud/answer/6158849?hl=en#zippy=) en la Ayuda de la consola de Google Cloud Platform. 

    El ID de cliente de OAuth 2.0 debe tener una o más URL de redireccionamiento autorizadas. 

    Las URL de redireccionamiento tienen el formato siguiente: 
   + https://<aws-region>.console.aws.amazon.com/gluestudio/oauth 

1.  Tenga en cuenta que el ID de cliente y el secreto del cliente provienen de la configuración de su ID de cliente de OAuth 2.0. 

# Limitaciones del conector de Google Sheets
<a name="googlesheets-connector-limitations"></a>

A continuación, se indican las limitaciones del conector de Google Sheets:
+  El conector de Google Sheets no admite filtros. Por lo tanto, no se puede admitir la partición basada en filtros. 
+  En la partición basada en registros, no existe ninguna provisión para devolver el recuento exacto de registros por SAAS. Como resultado, se pueden presentar situaciones en las que se creen archivos con registros vacíos.
+  Dado que el conector de Google Sheets no admite la partición basada en filtros, `partitionField`, `lowerbound` y `upperbound` no son opciones de conexión válidas. Si se proporcionan estas opciones, es probable que se presente un error en el trabajo de AWS Glue. 
+  Es esencial designar la primera fila de la hoja como fila de encabezado para evitar problemas de procesamiento de datos. 
  +  Si no se proporciona, la fila del encabezado se sustituirá por `Unnamed:1`, `Unnamed:2`, `Unnamed:3`... si la hoja contiene datos con la primera fila vacía. 
  +  Si se proporciona una fila de encabezado, los nombres de las columnas vacías se reemplazarán por `Unnamed:<number of column>`. Por ejemplo, si la fila de encabezado es `['ColumnName1', 'ColumnName2', '', '', 'ColumnName5', 'ColumnName6']`, pasará a ser `['ColumnName1', 'ColumnName2', 'Unnamed:3', 'Unnamed:4', 'ColumnName5', 'ColumnName6'].` 
+  El conector de Google Sheets no es compatible con las transferencias incrementales. 
+  El conector de Google Sheets solo admite el tipo de datos String. 
+  A los encabezados duplicados de una hoja se les cambiará el nombre de forma iterativa mediante un sufijo numérico. Los nombres de encabezado proporcionados por el usuario tendrán prioridad al cambiar el nombre de los encabezados duplicados. Por ejemplo, si la fila del encabezado es ["Nombre", "", "Nombre", nulo, "Sin nombre:6", ""], cambiará a: ["Nombre", "Sin nombre:2", "Nombre1", "Sin nombre:4", "Sin nombre:6", "Sin nombre:61"]. 
+  El conector de Google Sheets no admite espacios en los nombres de una pestaña. 
+  El nombre de una carpeta no puede contener los siguientes caracteres especiales: 
  + \$1
  + /