

# Conectar ao Google Sheets
<a name="connecting-to-googlesheets"></a>

 O Google Sheets é um software de planilhas online que permite organizar grandes quantidades de dados, criar relatórios personalizados, automatizar cálculos e colaborar com outras pessoas. Se você for usuário do Google Sheets, poderá conectar o AWS Glue à sua conta do Google Sheets. Você poderá então usar o Google Sheets como fonte de dados nos seus trabalhos de ETL. Execute esses trabalhos para transferir dados entre o Google Sheets e serviços da AWS ou outras aplicações compatíveis. 

**Topics**
+ [Suporte do AWS Glue ao Planilhas Google](googlesheets-support.md)
+ [Políticas que contêm as operações de API para criar e usar conexões](googlesheets-configuring-iam-permissions.md)
+ [Configurar o Planilhas Google](googlesheets-configuring.md)
+ [Configuração de conexões do Planilhas Google](googlesheets-configuring-connections.md)
+ [Leitura de entidades do Planilhas Google](googlesheets-reading-from-entities.md)
+ [Opções de conexão do Planilhas Google](googlesheets-connection-options.md)
+ [Configurar o fluxo OAuth do código de autorização para o Planilhas Google](googlesheets-oauth-authorization.md)
+ [Limitações do conector do Planilhas Google](googlesheets-connector-limitations.md)

# Suporte do AWS Glue ao Planilhas Google
<a name="googlesheets-support"></a>

O AWS Glue oferece suporte ao Planilhas Google da seguinte maneira:

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

**Compatível como destino?**  
Não.

**Versões da API do Planilhas Google compatíveis**  
 API do Planilhas Google v4 e API do Google Drive v3 

# Políticas que contêm as operações de API para criar e usar conexões
<a name="googlesheets-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": "*"
    }
  ]
}
```

------

É possível usar as seguintes políticas gerenciadas do IAM para permitir acesso:
+  [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. 

# Configurar o Planilhas Google
<a name="googlesheets-configuring"></a>

Para usar o AWS Glue para transferir dados do Planilhas Google, os seguintes requisitos deverão ser atendidos:

## Requisitos mínimos
<a name="googlesheets-configuring-min-requirements"></a>
+ Você tem uma conta do Planilhas Google com e-mail e senha.
+  A conta do Planilhas Google está habilitada para acesso de API. Todo o uso da API do Planilhas Google está disponível sem custo adicional. 
+  A conta do Planilhas Google permite a instalação de aplicações conectadas. Caso não tenha acesso a essa funcionalidade, entre em contato com seu administrador do Planilhas Google. 

 Caso atenda a esses requisitos, você poderá conectar o AWS Glue à conta do Planilhas Google. 

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

Para configurar uma conexão com o Planilhas Google:

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

   1.  Para o tipo de concessão AuthorizationCode: 
      +  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`. 

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

   1. Ao selecionar uma **Fonte de dados**, selecione Planilhas Google.

   1. Forneça o ambiente do Planilhas Google.

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

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

****  

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

------

 **Tipo de concessão AUTHORIZATION\$1CODE** 

 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. Ele é usado na criação de conexões por meio do Console do AWS Glue. O Console do AWS Glue redirecionará o usuário para o Planilhas Google, onde ele deverá fazer login e dar autorização para que as permissões solicitadas pelo AWS Glue acessem a instância do Planilhas Google. 

 Os usuários podem optar por criar sua própria aplicação conectada no Planilhas Google 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 Planilhas Google 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 mais informações, consulte a [documentação pública do Planilhas Google sobre a criação de uma aplicação conectada para o fluxo de código de autorização do OAuth](https://developers.google.com/workspace/guides/create-credentials). 

# Leitura de entidades do Planilhas Google
<a name="googlesheets-reading-from-entities"></a>

 **Pré-requisitos** 
+  Uma planilha do Google da qual você gostaria de ler. Você precisará do ID da planilha e do nome da aba da planilha. 

 **Detalhes de entidades e campos do Planilhas Google:** 


| Entidade | Tipo de dado | Operadores com suporte | 
| --- | --- | --- | 
| Planilha | String | N/D (não há suporte para filtros) | 

 **Exemplo** 

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

 **Particionamento de consultas** 

 Para o particionamento baseado em registros somente, `NUM_PARTITIONS` ser fornecido como opções adicionais do spark se você quiser utilizar a simultaneidade no Spark. Com esse parâmetro, a consulta original seria dividida em `NUM_PARTITIONS` subconsultas, que poderiam ser executadas pelas tarefas do Spark simultaneamente. 

 **Exemplo com `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"
    }
```

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

São opções de conexão do Planilhas Google:
+  `ENTITY_NAME`(string): (obrigatório) usado para leitura. O `SpreadSheet ID` e `sheetTabName` no Planilhas Google. Exemplo: `{SpreadSheetID}#{SheetTabName}`. 
+  `API_VERSION`(string): (obrigatório) usado para leitura. Versão da API Rest do Planilhas Google que você deseja usar. 
+  `SELECTED_FIELDS`(Lista<String>): padrão: vazio(SELECIONE \$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: vazia. Usado para leitura. Consulta completa do Spark SQL. 
+  `NUM_PARTITIONS`(Inteiro): padrão: 1. Usado para leitura. Número de partições para leitura. 

# Configurar o fluxo OAuth do código de autorização para o Planilhas Google
<a name="googlesheets-oauth-authorization"></a>

 **Pré-requisitos** 
+  Uma conta do Google na qual você pode fazer login para usar a aplicação Planilhas Google. Na sua conta do Google, o Planilhas Google contém os dados que você deseja transferir. 
+  Uma conta do Google Cloud Platform e um projeto do Google Cloud. Consulte [Criar projeto do Google Cloud](https://developers.google.com/workspace/guides/create-project) para obter mais detalhes. 

**Para configurar sua conta do Google e obter credenciais do OAuth 2.0:**

1.  Depois que o projeto do Google Cloud estiver configurado, ative a API do Planilhas Google e as APIs do Google Drive no projeto. Para ver as etapas para habilitá-las, consulte [Habilitar e desabilitar APIs](https://support.google.com/googleapi/answer/6158841) na Ajuda do console de APIs para o Google Cloud Platform. 

1.  Em seguida, configure uma tela de consentimento do OAuth para usuários externos. Para obter mais informações sobre a tela de consentimento do OAuth, consulte [Configurar tela de consentimento do OAuth](https://support.google.com/cloud/answer/10311615#) na Ajuda do console do Google Cloud Platform. 

1.  Na tela de consentimento do OAuth, adicione os seguintes escopos: 
   +  [O escopo somente leitura da API do Planilhas Google](https://www.googleapis.com/auth/spreadsheets.readonly) 
   +  [O escopo somente leitura da API do Google Drive](ttps://www.googleapis.com/auth/drive.readonly) 

    Para obter mais informações sobre esses escopos, consulte [Escopos do OAuth 2.0 para APIs do Google](https://developers.google.com/identity/protocols/oauth2/scopes) na documentação do Google Identity. 

1.  Gere o ID e o segredo do cliente do OAuth 2.0. Para obter os passos para criar esse ID do cliente, consulte [Configurar OAuth 2.0](https://support.google.com/cloud/answer/6158849?hl=en#zippy=) na Ajuda do console do Google Cloud Platform. 

    O ID do cliente do OAuth 2.0 deve ter um ou mais URLs de redirecionamento autorizados. 

    Os URLs de redirecionamento têm o seguinte formato: 
   + https://<aws-region>.console.aws.amazon.com/gluestudio/oauth 

1.  O ID do cliente e o segredo do cliente são provenientes das configurações do ID do cliente do OAuth 2.0. 

# Limitações do conector do Planilhas Google
<a name="googlesheets-connector-limitations"></a>

Estas são as limitações do conector do Planilhas Google:
+  O conector do Planilhas Google não oferece suporte a filtros. Portanto, não pode haver suporte ao particionamento baseado em filtros. 
+  No particionamento baseado em registros, não há provisão para retornar a contagem exata de registros pelo SaaS. Como resultado, pode haver cenários em que arquivos com registros vazios sejam criados.
+  Como o conector do Planilhas Google não oferece suporte ao particionamento baseado em filtros, `partitionField`, `lowerbound` e `upperbound` não são opções de conexão válidas. Se essas opções forem fornecidas, espera-se que o trabalho do AWS Glue falhe. 
+  É essencial designar a primeira linha da planilha como a linha do cabeçalho para evitar problemas no processamento dos dados. 
  +  Se não for fornecida, a linha do cabeçalho será substituída por `Unnamed:1`, `Unnamed:2`, `Unnamed:3`... se a planilha contiver dados com a primeira linha vazia. 
  +  Se a linha do cabeçalho for fornecida, os nomes das colunas vazias serão substituídos por `Unnamed:<number of column>`. Por exemplo, se a linha do cabeçalho for `['ColumnName1', 'ColumnName2', '', '', 'ColumnName5', 'ColumnName6']`, ela passará a ser `['ColumnName1', 'ColumnName2', 'Unnamed:3', 'Unnamed:4', 'ColumnName5', 'ColumnName6'].` 
+  O conector do Google Sheets não é compatível com a transferência incremental. 
+  O conector do Google Sheets é compatível apenas com o tipo de dados String. 
+  Os cabeçalhos duplicados em uma planilha serão renomeados iterativamente com um sufixo numérico. Os nomes dos cabeçalhos fornecidos pelo usuário terão precedência ao renomear os cabeçalhos duplicados. Por exemplo, se a linha do cabeçalho for ["Name", "", "Name", null, "Unnamed:6", ""], ela será alterada para: ["Name", "Unnamed:2", "Name1", "Unnamed:4", "Unnamed:6", "Unnamed:61"]. 
+  O conector do Google Sheets não permite espaços em um nome de guia. 
+  O nome de uma pasta não pode conter os seguintes caracteres especiais: 
  + \$1
  + /