

# Conexión a Smartsheet
<a name="connecting-to-smartsheet"></a>

Smartsheet es un producto SaaS de colaboración y administración del trabajo. En esencia, Smartsheet permite a los usuarios utilizar objetos similares a hojas de cálculo para crear, almacenar y utilizar datos empresariales.

**Topics**
+ [Compatibilidad de AWS Glue con Smartsheet](smartsheet-support.md)
+ [Políticas que contienen las operaciones de la API para crear y usar conexiones](smartsheet-configuring-iam-permissions.md)
+ [Configuración de Smartsheet](smartsheet-configuring.md)
+ [Configuración de las conexiones a Smartsheet](smartsheet-configuring-connections.md)
+ [Cómo leer de entidades de Smartsheet](smartsheet-reading-from-entities.md)
+ [Opción de conexión a Smartsheet](smartsheet-connection-options.md)
+ [Creación de una cuenta de Smartsheet](smartsheet-create-account.md)
+ [Limitaciones](smartsheet-connector-limitations.md)

# Compatibilidad de AWS Glue con Smartsheet
<a name="smartsheet-support"></a>

AWS Glue es compatible con Smartsheet de la siguiente manera:

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

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

**Versiones de la API de Smartsheet compatibles**  
 v2.0 

# Políticas que contienen las operaciones de la API para crear y usar conexiones
<a name="smartsheet-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": "*"
    }
  ]
}
```

------

Si no desea utilizar el método anterior, como alternativa, utilice las siguientes políticas de IAM administradas:
+  [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 completo a los recursos de AWS Gluecuando una identidad a la que está vinculada 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 Smartsheet
<a name="smartsheet-configuring"></a>

Antes de poder utilizar AWS Glue para transferir desde Smartsheet, deberá cumplir los siguientes requisitos:

## Requisitos mínimos
<a name="smartsheet-configuring-min-requirements"></a>
+ Tener una cuenta de Smartsheet con correo electrónico y contraseña. Para obtener más información sobre cómo crear una cuenta, consulte [Cómo crear una cuenta de Smartsheet](smartsheet-create-account.md). 
+ La cuenta de Smartsheet tiene acceso a la API con una licencia válida.
+ La cuenta de Smartsheet tiene un plan de precios **Pro** para la entidad `Sheets` y un plan de precios Enterprise con el complemento de informes de eventos para la entidad `Events`.

Si cumple estos requisitos, estará listo para conectar AWS Glue a la cuenta de Smartsheet. Para conexiones típicas, no necesita hacer nada más en Smartsheet.

# Configuración de las conexiones a Smartsheet
<a name="smartsheet-configuring-connections"></a>

 Smartsheet 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. Los usuarios aún pueden optar por crear una aplicación conectada propia en Smartsheet y proporcionar un ID y secreto de cliente propios al crear conexiones a través de la consola de AWS Glue. En este escenario, aún se abrirá Smartsheet 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 documentación pública de Smartsheet sobre la creación de una aplicación conectada para el flujo AUTHORIZATION\$1CODE OAuth, consulte [API de Smartsheet](https://smartsheet.redoc.ly/#section/OAuth-Walkthrough). 

Para configurar una conexión a Smartsheet:

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

   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`. 
**nota**  
Es imprescindible crear un secreto por conexión en AWS Glue.

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

   1. Al seleccionar un **Tipo de conexión**, elija Smartsheet.

   1. Proporcione la `instanceUrl` de Smartsheet a la que se desea conectar.

   1. Seleccione el rol de IAM que AWS Glue puede asumir y que cuente con los permisos necesarios para realizar 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`. 

# Cómo leer de entidades de Smartsheet
<a name="smartsheet-reading-from-entities"></a>

 **Requisitos previos** 

Un objeto de `Smartsheet` desde el que desea 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 | 
| --- | --- | --- | --- | --- | --- | 
| Listar hoja | Sí | Sí | No | Sí | No | 
| Metadatos de fila | Sí | Sí | No | Sí | No | 
| Metadatos de hoja | No | No | No | Sí | No | 
| Datos de hoja | Sí | Sí | Sí | Sí | No | 
| Evento | Sí | Sí | No | Sí | No | 

 **Ejemplo** 

```
Smartsheet_read = glueContext.create_dynamic_frame.from_options(
    connection_type="smartsheet",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "list-sheets",
        "API_VERSION": "2.0",
        "INSTANCE_URL": "https://api.smartsheet.com"
    })
```

 **Detalles de entidades y campos de Smartsheet** 

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/smartsheet-reading-from-entities.html)

**Entidades con metadatos dinámicos:**

Para la siguiente entidad, Smartsheet proporciona un punto de conexión para obtener los metadatos de forma dinámica, de modo que la compatibilidad con el operador se capture a nivel del tipo de datos.


| Entidad |  Tipo de datos  | Operadores admitidos | 
| --- | --- | --- | 
|  Datos de la hoja  |  Cadena  | N/D | 
| Datos de la hoja |  Largo  | "=" | 
| Datos de la hoja | Entero | N/D | 
| Datos de la hoja | DateTime | > | 

 **Ejemplo** 

```
Smartsheet_read = glueContext.create_dynamic_frame.from_options(
    connection_type="smartsheet",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "list-sheets",
        "API_VERSION": "2.0",
        "INSTANCE_URL": "https://api.smartsheet.com"
    }
```

# Opción de conexión a Smartsheet
<a name="smartsheet-connection-options"></a>

Las siguientes son opciones de conexión para Smartsheet:
+ `ENTITY_NAME`(cadena): (obligatorio) se utiliza para leer y escribir. El nombre del objeto en Smartsheet. 
+ `API_VERSION`(cadena): (obligatorio) se utiliza para leer y escribir. Versión de la API de REST de Smartsheet que desea usar. Por ejemplo, v2.0. 
+ `INSTANCE_URL`(cadena): (obligatorio) se usa para lectura. URL de la instancia de Smartsheet.
+ `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. 

# Creación de una cuenta de Smartsheet
<a name="smartsheet-create-account"></a>

1. Para registrarse y obtener una cuenta de Smartsheet, acceda a la [página de registro de Smartsheet](https://app.smartsheet.com/home). 

1. Seleccione **Crear una** para crear una cuenta nueva o inicie sesión con la cuenta registrada de Google, Microsoft o Apple.

1.   Ingrese la dirección de correo electrónico laboral cuando se le solicite.   

1.   Elija **Continuar** y, si es necesario, verifique su identidad.  

1. Abra el correo electrónico de confirmación de Smartsheet y seleccione el enlace de confirmación para verificar la cuenta. 

   Quedará suscrito al plan de prueba de forma predeterminada. 

1. En la esquina inferior izquierda, elija el icono **Cuenta** y seleccione **Agregar licencias/Ampliar** para mejorar el plan de precios.
**nota**  
Esto es necesario para acceder al **Informe de eventos**, que es un complemento del plan **Enterprise**.

1. En el plan **Enterprise**, elija **Contáctenos** para solicitar una actualización de cuenta al equipo de soporte.

1. En el formulario de solicitud de soporte, proporcione los detalles requeridos y sus requisitos para actualizar el plan.

   Esto completa la actualización al plan **Enterprise**.

**Creación de credenciales de `OAuth2.0`**

1. Después de actualizar el plan de precios de la cuenta para obtener acceso a las **Herramientas para desarrolladores**, acceda a [Desarrolladores de Smartsheet](https://developers.smartsheet.com/). 

   Recibirá un correo electrónico de activación.

1. Abra un correo electrónico de activación de Smartsheet y elija el enlace de activación para activar las herramientas para desarrolladores en la cuenta. 

   La herramienta para desarrolladores permite crear la aplicación.

1. Abra la página de inicio de la cuenta de Smartsheet y seleccione **Cuenta** para comprobar el acceso.

1. Elija **Herramientas para desarrolladores** en la lista de servicios e ingrese los detalles del **Perfil de desarrollador**.

1. Elija **Crear nueva aplicación**.

1. Ingrese los siguientes datos en el formulario de registro de la aplicación:
   + **Nombre**: el nombre de la aplicación.
   + **Descripción**: descripción de la aplicación.
   + **URL**: URL que permite lanzar la aplicación o la URL de la página de destino.
   + **Contacto/soporte**: información de contacto del equipo de soporte.
   + **URL de redireccionamiento**: URL (también conocida como URL de devolución de llamada) de la aplicación que recibirá las credenciales de [OAuth 2.0](https://.console.aws.amazon.com/appflow/oauth). 

1. Seleccione **Save**.

   Smartsheet asigna un ID de cliente y un secreto de cliente a la aplicación. Registre estos valores para los siguientes pasos. También puede volver a buscarlos más tarde en la sección **Herramientas para desarrolladores**.

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

Smartsheet no admite la partición basada en campos o registros.