Gspread: trabalhando com o Google Sheets

Naiara Cerqueira
pyladiesbh
Published in
4 min readOct 7, 2020

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.

Botão de console no Google Cloud

(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 ❤

--

--