Como ler e escrever em planilhas do Google com Python
A sintaxe do Python pode parecer estranha e incomum à primeira vista. Mas é fácil de aprender e usar quando você pega o jeito. O Python capacita a codificação de jogos como Minecraft Pi Edition, muitos algoritmos de aprendizado de máquina e uma série de sites.
Mas neste artigo, você aprenderá a ler e escrever no Planilhas Google usando Python.
Configuração do Google
Antes de avançar para o código, há algumas configurações iniciais para sair do caminho no Planilhas Google.
Primeiro, crie uma nova planilha. Você pode pular esta etapa se já tiver uma configurada. Estamos usando uma lista de carros de rally para este exemplo. Mas você pode seguir este tutorial com seus próprios dados:
Agora você precisa configurar suas opções de compartilhamento. Mas, primeiro, você precisa gerar credenciais assinadas no Google Developers Console. É fácil; navegue até o Google Developers Console e siga estas etapas:
- Clique em CRIAR PROJETO para criar um novo projeto (ou use um existente):
- Dê ao seu projeto um nome adequado e clique em CRIAR :
- Na notificação que aparece, clique em SELECIONAR PROJETO abaixo do projeto que você acabou de criar para entrar nele.
- Deslize para fora do menu lateral e passe o cursor sobre APIs e serviços e selecione Painel .
- Clique em HABILITAR APIS E SERVIÇOS na parte superior da página. Nas opções, selecione API do Planilhas Google (use a barra de pesquisa se não conseguir encontrá-la):
- Escolha ENABLE :
- Clique em CRIAR CREDENCIAIS e selecione Credenciais no menu à esquerda:
- Clique no botão CRIAR CREDENCIAIS na parte superior da página:
- Em seguida, selecione a conta de serviço :
- Preencha o campo do nome da conta de serviço e clique em CRIAR , seguido de CONCLUÍDO :
- Você verá a conta de serviço agora listada na tabela Contas de serviço na parte inferior da próxima página. Clique no ícone de edição ao lado dele:
- Escolha CHAVES . Em seguida, clique no botão ADICIONAR CHAVE e selecione Criar nova chave :
- Escolha JSON como formato:
- Clique em CRIAR e um arquivo JSON deve ser baixado para o seu PC. Mova-o para o diretório do projeto e dê a ele seu nome preferido com um formato de arquivo .json anexado.
- Finalmente, abra o arquivo e procure client_email . Deve ser algo como: id.gserviceaccount.com . Copie este endereço.
- Abra o Planilhas Google e compartilhe-o com este endereço de e-mail ( canto superior direito > Compartilhar > Digitar e-mail ). Clique no endereço de e-mail quando ele aparecer e, em seguida, clique em Enviar para conceder acesso.
Isso é tudo para o lado do Planilhas Google.
Configuração Python
Se você estiver executando o sistema operacional Windows, pode ser necessário baixar e instalar o Python . Você não precisa se preocupar com isso se estiver no macOS, pois ele vem com o Python já instalado.
Primeiro, abra um novo terminal e crie um ambiente virtual Python .
Você precisará instalar uma estrutura de autorização da web chamada oauth2client . É fácil de instalar usando pip :
pip install oauth2client
Pode ser necessário instalar o PyOpenSSL também, dependendo da sua configuração:
pip install PyOpenSSL
Agora você também precisa instalar um pacote de comunicação do Planilhas Google chamado gspread . Novamente, isso é fácil de instalar usando pip :
pip install gspread
Agora abra seu editor de texto favorito . Em seguida, crie um novo arquivo Python com uma extensão de arquivo .py anexada e salve-o no diretório do projeto.
De volta ao seu terminal, faça cd no diretório do seu projeto. Você pode usar dir para listar os arquivos nesse diretório. Você também pode mostrar seu diretório de trabalho, se desejar.
Uma vez no diretório do projeto, você sempre pode executar o script Python chamando-o por meio da linha de comando desta forma:
python [file_name].py
A saída do seu código, então, aparece na linha de comando.
Agora que o Python está funcionando, vamos prosseguir e configurar as bibliotecas. Abra o arquivo Python que você criou anteriormente e importe as seguintes bibliotecas:
import gspread
from oauth2client.service_account import ServiceAccountCredentials
import json
Em seguida, execute o código.
Se tudo estiver funcionando corretamente, nada acontecerá. Se você receber um erro, talvez dizendo nenhum módulo denominado X, onde X é o nome de qualquer um dos módulos importados, primeiro certifique-se de ter ativado seu ambiente virtual.
Você também pode exibir a lista de todos os módulos instalados naquele ambiente, executando pip freeze por meio da linha de comando. Se o módulo ausente não estiver lá, execute pip install [módulo] novamente. Certifique-se de evitar erros de digitação.
Este é o código para você começar a ler e escrever suas Planilhas Google:
from oauth2client.service_account import ServiceAccountCredentials
import gspread
import json
scopes = [
'https://www.googleapis.com/auth/spreadsheets',
'https://www.googleapis.com/auth/drive'
]
credentials = ServiceAccountCredentials.from_json_keyfile_name("[JSON_key_name].json", scopes) #access the json key you downloaded earlier
file = gspread.authorize(credentials) # authenticate the JSON key with gspread
sheet = file.open("Python_MUO_Google_Sheet") #open sheet
sheet = sheet.sheet_name #replace sheet_name with the name that corresponds to yours, eg, it can be sheet1
Esse bloco de código recupera seus detalhes do arquivo .json que contém sua chave de autenticação. Em seguida, ele o usa para se autenticar no Google usando o módulo gspread . Em seguida, ele abre uma planilha chamada Python_MUO_Google_Sheet . Pode ser necessário alterar isso para o nome de sua planilha (desde que você a tenha compartilhado corretamente). Python diferencia maiúsculas de minúsculas, portanto, certifique-se de inserir este código corretamente.
Lendo suas planilhas do Google com Python
Agora que tudo está configurado, é muito fácil ler ou gravar dados no Planilhas Google com Python. Veja como você seleciona um intervalo de células (neste caso, todas as células do carro):
all_cells = sheet.range('A1:C6')
print(all_cells)
Isso é o que parece:
A saída acima não parece boa porque o Python despejou o conteúdo sem se preocupar com a formatação.
Então, aqui está como você imprime todos os valores da célula em um formato mais agradável usando o loop for do Python e a função de valor embutida:
for cell in all_cells:
print(cell.value)
E isso se parece com isto:
É possível acessar as células individualmente:
A1 = sheet.acell('A2').value
print(A1)
Output: Ford
Ou você pode usar as coordenadas da célula. Isso acontece linha por coluna. Por exemplo, o código a seguir obtém os dados da quinta linha e da terceira coluna:
coord = sheet.cell(5, 3).value
É fácil obter todos os valores de uma linha também:
row = sheet.row_values(1) #first row
print(row)
Ou você pode obter uma coluna inteira. O exemplo abaixo obtém a segunda coluna:
col = sheet.col_values(2)
print(col)
Escrevendo em suas planilhas do Google
É tão fácil escrever de volta na planilha, e você pode usar nomes de células ou coordenadas como ao ler:
sheet.update_acell('C2', 'Blue')
sheet.update_cell(2, 3, 'Blue') #updates row 2 on column 3
Atualizar uma série de células também é fácil:
sheet.update('A2:B3', [["Not Ford", "Not Lancia"], ["Nothing", "Not"]])
Nota: Você pode anexar sua planilha atualizando as células vazias às quais deseja adicionar dados usando o método update () também.
Formate os cabeçalhos das planilhas do Google em negrito se desejar:
sheet.format('A1:C1', {'textFormat': {'bold': True}})
Você também pode usar gspread juntamente com pandas e numpy. Dê uma olhada na documentação do GSSpread se desejar saber mais sobre as várias reviravoltas e ajustes em torno disso.
Se você está escrevendo para uma folha importante que gerencia com outras pessoas, pode considerar uma célula de segurança . Armazene um valor em uma determinada célula e então leia essa célula primeiro. Se o conteúdo mudou, então outras pessoas mudaram ou adicionaram colunas à planilha, então você não pode continuar escrevendo. Veja como você pode conseguir isso:
if sheet.acell('B3') != 'SAFETY':
# something has changed in the sheet, DO NOT PROCEED
print("Sheet already updated.")
else:
# continue with your writing
sheet.update_acell('C2','Blue')
Essa é uma boa prática. Isso garante que seu script não possa gravar acidentalmente em uma coluna já atualizada. No entanto, não é um substituto para backups adequados.
Automatize suas tarefas de planilha com Python
Agora que você sabe o básico, vá em frente e faça algo legal! Em vez de reinventar a roda, você pode automatizar tarefas criando funções dedicadas e que podem ser chamadas que lêem e gravam em suas Planilhas Google.
Além disso, se você também usa o Microsoft Excel, pode importar dados do Excel para scripts Python e manipular sua planilha do Excel como desejar.