Gspread: trabalhando com o Google Sheets
Para quem trabalha com dados, às vezes é bem interessante pegar dados de planilhas do Google Sheets ou acrescentar linhas a uma planilha já existente. Para isso, podemos utilizar um pacote python chamado gspread
.
Nesse texto vamos aprender a criar uma credencial na API, fazer login no Sheets, ler uma planilha já existente e escrever linhas em uma planilha vazia ou já preenchida.
1. Autorização na API
Logado em sua conta do Google, siga os passos:
(1) Vá no site do Google Cloud e clique em ‘Console’ no canto superior direito.
(2) Vá no menu -> API’s e serviços -> Biblioteca. Buscar e ativar a de Google Drive e de Google Sheets.
(3) Váno menu -> API’s e serviços -> Credenciais. Em ‘+ Criar Credenciais’ selecione ‘Conta de Serviço’ e dê um nome para sua conta.
(4) Clique no email visível em ‘Contas de Serviço’:
(5) Crie uma nova chave:
Abra esse arquivo *.json e copie o endereço de email (“client_email”). Lá no Google Drive, no arquivo de Sheets que você irá utilizar, você deve dar autorização a esse email (compartilhe o arquivo com autorização no modo de edição).
Guarde esse arquivo, ele poderá ser utilizado em diversos projetos. Aqui, eu chamo ele de credentials.json, mas você pode utilizar o nome que você preferir.
2. Login
Ótimo! Agora que temos acesso à API e podemos alterar o arquivo, habemus código. Primeiro instalamos o pacote e importamos a biblioteca:
pip install gspread
import gspread
Depois, instalamos e importamos a biblioteca que executa a autorização da API:
pip install --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib
from google.oauth2 import service_account
Pronto, agora vamos nos conectar à API. Criamos dois objetos para facilitar o entendimento do código, um com os escopos (um autoriza o acesso ao Drive e outro autoriza acesso ao Sheets) e um com as credenciais (o arquivo *.json que baixamos anteriormente, lembre-se de utilizar o caminho completo desse arquivo, se ele não estiver na mesma pasta do arquivo *.py):
scopes = ["https://www.googleapis.com/auth/spreadsheets",
"https://www.googleapis.com/auth/drive"]json_file = "credentials.json"
A lista de escopos disponíveis para a API do Google Sheets:
Assim, podemos fazer o login:
def login(): credentials = service_account.Credentials.from_service_account_file(json_file) scoped_credentials = credentials.with_scopes(scopes) gc = gspread.authorize(scoped_credentials) return gc
3. Leitura de planilha
Agora que você autorizou o acesso, vamos ler uma planilha já existente, e transformá-la em um pandas dataframe, para facilitar a manipulação:
def leitor(aba): gc = login() planilha = gc.open("Nome da Planilha") aba = planilha.worksheet("Nome da Aba") dados = aba.get_all_records() df = pd.DataFrame(dados) return df
Agora você tem um objeto pandas para utilizar normalmente. Comece com um df.head()
para verificar se tudo correu como o esperado!
4. Escrita em planilha
Para escrever uma linha no sheets é só segui os passos até def login(), criar uma lista de strings (sim, você precisa transformar todos os seus valores em strings) e fazer um append dessa lista como uma linha da planilha:
def escritor(lista): gc = login() planilha = gc.open('Nome da Planilha') planilha = planilha.worksheet('Nome da Aba') planilha.append_row(lista, value_input_option='USER_ENTERED')
Pronto! Se você verificar essa planilha no Sheets, a lista que você enviou vai estar lá!
Eu quero me tornar cientista de dados, logo, se tiver algo errado, alguma observação, crítica ou elogio: me avise!
Obrigada a todos pelas dicas ❤