

# Conectar ao Smartsheet
<a name="connecting-to-smartsheet"></a>

O Smartsheet é um produto SaaS de gerenciamento de trabalho e colaboração. Fundamentalmente, o Smartsheet permite que os usuários usem objetos semelhantes a planilhas para criar, armazenar e utilizar dados de negócios.

**Topics**
+ [Suporte do AWS Glue para Smartsheet](smartsheet-support.md)
+ [Políticas que contêm as operações de API para criar e usar conexões](smartsheet-configuring-iam-permissions.md)
+ [Configuração do Smartsheet](smartsheet-configuring.md)
+ [Configuração de conexões do Smartsheet](smartsheet-configuring-connections.md)
+ [Leitura de entidades do Smartsheet](smartsheet-reading-from-entities.md)
+ [Opções de conexão do Smartsheet](smartsheet-connection-options.md)
+ [Criação de uma conta do Smartsheet](smartsheet-create-account.md)
+ [Limitações](smartsheet-connector-limitations.md)

# Suporte do AWS Glue para Smartsheet
<a name="smartsheet-support"></a>

O AWS Glue oferece suporte ao Smartsheet da seguinte forma:

**Compatível como fonte?**  
Sim. É possível usar trabalhos de ETL do AWS Glue para consultar dados do Smartsheet.

**Compatível como destino?**  
Nº

**Versões da API do Smartsheet com suporte**  
 v2.0 

# Políticas que contêm as operações de API para criar e usar conexões
<a name="smartsheet-configuring-iam-permissions"></a>

O exemplo de política a seguir descreve as permissões da AWS necessárias para criar e usar conexões. Se você estiver criando um novo perfil, crie uma política que contenha o seguinte: 

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

****  

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

------

Se não quiser usar o método anterior, uma alternativa será usar as seguintes políticas do IAM gerenciadas:
+  [AWSGlueServiceRole](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AWSGlueServiceRole): concede acesso a recursos que vários processos do AWS Glue exigem para serem executados em seu nome. Esses recursos incluem o AWS Glue, Amazon S3, IAM, CloudWatch Logs e Amazon EC2. Se você seguir a convenção de nomenclatura para os recursos especificados nesta política, os processos do AWS Glue terão as permissões necessárias. Esta política geralmente é anexada a funções especificadas durante a definição de crawlers, trabalhos e endpoints de desenvolvimento. 
+  [AWSGlueConsoleFullAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AWSGlueConsoleFullAccess): concede acesso total aos recursos do AWS Glue quando uma identidade à qual a política está anexada usa o Console de Gerenciamento da AWS. Se você seguir a convenção de nomenclatura para os recursos especificados nesta política, os usuários poderão acessar todos os recursos do console. Esta política geralmente é anexada aos usuários do console do AWS Glue. 

# Configuração do Smartsheet
<a name="smartsheet-configuring"></a>

Antes de poder usar o AWS Glue para transferir dados do Smartsheet, os seguintes requisitos deverão ser atendidos:

## Requisitos mínimos
<a name="smartsheet-configuring-min-requirements"></a>
+ Você tem uma conta do Smartsheet com e-mail e senha. Para obter mais informações sobre como criar uma conta, consulte [Criação de uma conta do Smartsheet](smartsheet-create-account.md). 
+ Sua conta do Smartsheet tem acesso à API com uma licença válida.
+ Sua conta do Smartsheet tem um plano de **preços Pro** para a entidade `Sheets` e um plano de preços Enterprise com o complemento Event Reporting para a entidade `Events`.

Se você atender a esses requisitos, poderá conectar o AWS Glue à conta do Smartsheet. Para conexões típicas, você não precisa fazer mais nada no Smartsheet.

# Configuração de conexões do Smartsheet
<a name="smartsheet-configuring-connections"></a>

 O Smartsheet oferece suporte ao tipo de concessão `AUTHORIZATION_CODE` para OAuth2. 

Esse tipo de concessão é considerado um `OAuth` de “três pernas”, pois conta com o redirecionamento dos usuários para o servidor de autorização de terceiros para autenticar o usuário. Os usuários ainda podem optar por criar sua própria aplicação conectada no Smartsheet e fornecer seus próprios ID e segredo do cliente ao criar conexões por meio do console do AWS Glue. Nesse cenário, eles ainda serão redirecionados para o Smartsheet para fazer login e autorizar o acesso do AWS Glue aos recursos. 

Esse tipo de concessão resulta em um token de atualização e um token de acesso. O token de acesso tem vida curta e pode ser atualizado automaticamente sem a interação do usuário usando o token de atualização. 

Para obter a documentação pública do Smartsheet sobre a criação de uma aplicação conectada para o fluxo OAuth AUTHORIZATION\$1CODE, consulte [APIs do Smartsheet](https://smartsheet.redoc.ly/#section/OAuth-Walkthrough). 

Para configurar uma conexão do Smartsheet:

1. No AWS Secrets Manager, crie um segredo com os seguintes detalhes: 

   Para uma aplicação conectada gerenciada pelo cliente, o segredo deve conter a aplicação conectada Segredo do consumidor com a chave `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET`. 
**nota**  
É preciso criar um segredo por conexão em AWS Glue.

1. No AWS Glue Studio, crie uma conexão em **Conexões de dados** seguindo estas etapas: 

   1. Ao selecionar um **Tipo de conexão**, escolha Smartsheet.

   1. Forneça o `instanceUrl` do Smartsheet ao qual deseja se conectar.

   1. Selecione o perfil do IAM que o AWS Glue pode assumir e tem permissões para as seguintes ações: 

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

****  

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

------

   1. Selecione o `secretName` que você deseja usar para essa conexão no AWS Glue para colocar os tokens. 

   1.  Selecione as opções de rede se quiser usar sua rede. 

1. Conceda permissão ao perfil do IAM associado ao seu trabalho do AWS Glue para ler `secretName`. 

# Leitura de entidades do Smartsheet
<a name="smartsheet-reading-from-entities"></a>

 **Pré-requisitos** 

Um objeto do `Smartsheet` do qual você deseja ler. Consulte a tabela de entidades compatíveis abaixo para verificar as entidades disponíveis. 

 **Entidades compatíveis** 


| Entidade | Pode ser filtrada | Oferece suporte a limite | Oferece suporte a Ordenar por | Oferece suporte a Selecionar \$1 | Oferece suporte a particionamento | 
| --- | --- | --- | --- | --- | --- | 
| Listar planilha | Sim | Sim | Não | Sim | Não | 
| Metadados de linha | Sim | Sim | Não | Sim | Não | 
| Metadados da planilha | Não | Não | Não | Sim | Não | 
| Dados da planilha | Sim | Sim | Sim | Sim | Não | 
| Event | Sim | Sim | Não | Sim | Não | 

 **Exemplo** 

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

 **Detalhes de entidade e campo do Smartsheet** 

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

**Entidades com metadados dinâmicos**:

Para a entidade a seguir, o Smartsheet fornece um endpoint para buscar metadados dinamicamente, para que o suporte do operador seja capturado no nível do tipo de dados.


| Entidade |  Tipo de dado  | Operadores com suporte | 
| --- | --- | --- | 
|  Dados da planilha  |  String  | NA | 
| Dados da planilha |  Longo  | "=" | 
| Dados da planilha | Inteiro | NA | 
| Dados da planilha | DateTime | > | 

 **Exemplo** 

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

# Opções de conexão do Smartsheet
<a name="smartsheet-connection-options"></a>

Estas são as opções de conexão do Smartsheet:
+ `ENTITY_NAME`(string): (obrigatório) usado para leitura/gravação. O nome do seu objeto no Smartsheet. 
+ `API_VERSION`(string): (obrigatório) usado para leitura/gravação. Versão da API Rest do Smartsheet que você deseja usar. Por exemplo, v2.0. 
+ `INSTANCE_URL`(string): (obrigatório) usado para leitura. URL da instância do Smartsheet.
+ `SELECTED_FIELDS`(lista<string>): padrão: vazio (SELECT \$1). Usado para leitura. Colunas que deseja selecionar para o objeto. 
+ `FILTER_PREDICATE`(string): padrão: vazio. Usado para leitura. Deve estar no formato Spark SQL. 
+ `QUERY`(string): padrão: vazio. Usado para leitura. Consulta completa do Spark SQL. 

# Criação de uma conta do Smartsheet
<a name="smartsheet-create-account"></a>

1. Cadastre-se para obter uma conta do Smartsheet acessando a [página de inscrição do Smartsheet](https://app.smartsheet.com/home). 

1. Escolha **Criar uma** para criar uma nova conta ou faça login usando sua conta registrada do Google, Microsoft ou Apple.

1.   Insira seu endereço de e-mail de trabalho quando solicitado.   

1.   Escolha **Continuar** e, se necessário, verifique sua identidade.  

1. Abra o e-mail de confirmação do Smartsheet e escolha o link de confirmação para verificar sua conta. 

   Você será inscrito no Plano de teste por padrão. 

1. No canto inferior esquerdo, escolha o ícone **Conta** e escolha **Adicionar licenças/Atualizar** para atualizar seu plano de preços.
**nota**  
Isso é necessário para acessar o **Relatório de eventos**, que é um complemento do plano **Enterprise**.

1. No plano **Enterprise**, escolha **Fale conosco** para solicitar uma atualização de conta à equipe de suporte.

1. No formulário de solicitação de suporte, forneça os detalhes necessários e seus requisitos para atualizar o plano.

   Isso conclui a atualização para o plano **Enterprise**.

**Criação de credenciais do `OAuth2.0`**

1. Depois de atualizar o plano de preços da sua conta para ter acesso às **Ferramentas do desenvolvedor**, acesse [Desenvolvedores do Smartsheet](https://developers.smartsheet.com/). 

   Você receberá um e-mail de ativação.

1. Abra o e-mail de ativação do Smartsheet e escolha o link de ativação para ativar as ferramentas do desenvolvedor em sua conta. 

   As ferramentas de desenvolvedor permitem que você crie a aplicação.

1. Abra a página inicial da sua conta do Smartsheet e escolha **Conta** para verificar o acesso.

1. Escolha **Ferramentas do desenvolvedor** na lista de serviços e insira os detalhes do **Perfil do desenvolvedor**.

1. Selecione **Criar nova aplicação**.

1. Insira os detalhes a seguir no formulário de registro da aplicação:
   + **Nome**: o nome da aplicação.
   + **Descrição**: a descrição da aplicação.
   + **URL**: URL que permite que você inicie sua aplicação ou o URL da página de destino.
   + **Contato/suporte**: informações de contato da equipe de suporte.
   + **URL de redirecionamento**: URL (também conhecida como URL de retorno de chamada) dentro da sua aplicação que receberá as credenciais do [OAuth 2.0](https://.console.aws.amazon.com/appflow/oauth). 

1. Escolha **Salvar**.

   O Smartsheet atribui um ID do cliente e um segredo do cliente à sua aplicação. Registre esses valores para as próximas etapas. Você também pode procurá-los novamente mais tarde na seção **Ferramentas do desenvolvedor**.

# Limitações
<a name="smartsheet-connector-limitations"></a>

O Smartsheet não oferece suporte ao particionamento baseado em campos ou baseado em registros.