Come leggere e scrivere su fogli Google con Python
La sintassi di Python può sembrare strana e insolita all’inizio. Ma è facile da imparare e da usare una volta capito. Python è alla base di giochi di programmazione come Minecraft Pi Edition, molti algoritmi di apprendimento automatico e una sfilza di siti web.
Ma in questo articolo imparerai come leggere e scrivere su Fogli Google usando Python.
Configurazione di Google
Prima di passare al codice, è necessario eseguire alcune impostazioni iniziali su Fogli Google.
Per prima cosa, crea un nuovo foglio. Puoi saltare questo passaggio se ne hai già uno configurato. Usiamo un elenco di auto da rally per questo esempio. Ma puoi seguire questo tutorial con i tuoi dati:
Ora devi configurare le tue opzioni di condivisione. Ma prima, devi generare le credenziali firmate dalla Google Developers Console. È facile; vai alla Google Developers Console e segui questi passaggi:
- Fare clic su CREA PROGETTO per creare un nuovo progetto (o utilizzarne uno esistente):
- Assegna al progetto un nome adatto e quindi fai clic su CREA :
- Dalla notifica che si apre, fai clic su SELEZIONA PROGETTO sotto il progetto appena creato per accedervi.
- Fai scorrere il menu laterale e posiziona il cursore su API e servizi , quindi seleziona Dashboard .
- Fare clic su ABILITA API E SERVIZI nella parte superiore della pagina. Dalle opzioni, seleziona l’ API di Fogli Google (usa la barra di ricerca se non riesci a trovarla):
- Scegli ABILITA :
- Fai clic su CREA CREDENZIALI e seleziona Credenziali dal menu a sinistra:
- Fare clic sul pulsante CREA CREDENZIALI nella parte superiore della pagina:
- Quindi seleziona Account di servizio :
- Compila il campo del nome dell’account di servizio e fai clic su CREA , seguito da FATTO :
- Vedrai l’account di servizio ora elencato nella tabella Account di servizio nella parte inferiore della pagina successiva. Fare clic sull’icona di modifica accanto ad essa:
- Scegli CHIAVI . Quindi fare clic sul pulsante AGGIUNGI CHIAVE e selezionare Crea nuova chiave :
- Scegli JSON come formato:
- Fai clic su CREA e un file JSON dovrebbe essere scaricato sul tuo PC. Spostalo nella directory del tuo progetto e dagli il tuo nome preferito con un formato di file .json aggiunto.
- Infine, apri il file e cerca client_email . Dovrebbe essere qualcosa del tipo: id.gserviceaccount.com . Copia questo indirizzo.
- Apri Fogli Google e condividilo con questo indirizzo email (in alto a destra > Condividi > Inserisci e-mail ). Fare clic sull’indirizzo e-mail una volta visualizzato, quindi premere Invia per concedere l’accesso.
Questo è tutto per il lato di Fogli Google.
Installazione di Python
Se utilizzi il sistema operativo Windows, potrebbe essere necessario scaricare e installare Python . Non devi preoccuparti di questo se sei su macOS poiché viene fornito con Python già installato.
Innanzitutto, apri un nuovo terminale e crea un ambiente virtuale Python .
Dovrai installare un framework di autorizzazione web chiamato oauth2client . È facile da installare utilizzando pip :
pip install oauth2client
Potrebbe essere necessario installare anche PyOpenSSL, a seconda della configurazione:
pip install PyOpenSSL
Ora devi anche installare un pacchetto di comunicazione di Fogli Google chiamato gspread . Di nuovo, questo è facile da installare usando pip :
pip install gspread
Ora apri il tuo editor di testo preferito . Quindi crea un nuovo file Python con un’estensione di file .py aggiunta e salvalo nella directory del progetto.
Di nuovo nel tuo terminale, cd nella directory del tuo progetto. Puoi usare dir per elencare i file in quella directory. Puoi anche mostrare la tua directory di lavoro, se lo desideri.
Una volta nella directory del progetto, puoi sempre eseguire il tuo script Python chiamandolo tramite la riga di comando in questo modo:
python [file_name].py
L’output del codice viene quindi visualizzato nella riga di comando.
Ora che Python funziona, andiamo avanti e configuriamo le librerie. Apri il file Python che hai creato in precedenza e importa le seguenti librerie:
import gspread
from oauth2client.service_account import ServiceAccountCredentials
import json
Quindi esegui il codice.
Se le cose funzionano correttamente, non accadrà nulla. Se ricevi un errore, forse dicendo che nessun modulo chiamato X dove X è il nome di uno qualsiasi dei moduli importati, assicurati prima di aver attivato il tuo ambiente virtuale.
Puoi anche visualizzare l’elenco di tutti i moduli che hai installato in quell’ambiente eseguendo pip freeze tramite la riga di comando. Se il modulo mancante non è presente, eseguire nuovamente pip install [module] . Assicurati di evitare errori di battitura.
Ecco il codice per iniziare a leggere e scrivere i tuoi fogli 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
Quel blocco di codice recupera i tuoi dettagli dal file .json contenente la tua chiave di autenticazione. Quindi lo utilizza per autenticarsi con Google utilizzando il modulo gspread . Quindi apre un foglio chiamato Python_MUO_Google_Sheet . Potrebbe essere necessario cambiarlo con il nome del tuo foglio (a condizione che tu lo abbia condiviso correttamente). Python distingue tra maiuscole e minuscole, quindi assicurati di inserire questo codice correttamente.
Leggere i tuoi fogli Google con Python
Ora che tutto è impostato, è un gioco da ragazzi leggere o scrivere dati in Fogli Google con Python. Ecco come selezionare un intervallo di celle (in questo caso, tutte le celle dell’auto):
all_cells = sheet.range('A1:C6')
print(all_cells)
Ecco come appare:
L’output sopra non sembra carino perché Python ha scaricato il contenuto senza riguardo per la formattazione.
Quindi ecco come stampare tutti i valori delle celle in un formato più carino usando il ciclo for di Python e la funzione di valore incorporata:
for cell in all_cells:
print(cell.value)
E assomiglia a questo:
È possibile accedere alle celle singolarmente:
A1 = sheet.acell('A2').value
print(A1)
Output: Ford
Oppure puoi usare le coordinate della cella. Ciò avviene riga per colonna. Ad esempio, il codice seguente ottiene i dati sulla quinta riga e sulla terza colonna:
coord = sheet.cell(5, 3).value
È facile ottenere anche tutti i valori per una riga:
row = sheet.row_values(1) #first row
print(row)
Oppure puoi ottenere un’intera colonna. L’esempio seguente ottiene la seconda colonna:
col = sheet.col_values(2)
print(col)
Scrivendo sui tuoi fogli Google
È altrettanto facile riscrivere nel foglio e puoi usare i nomi delle celle o le coordinate proprio come durante la lettura:
sheet.update_acell('C2', 'Blue')
sheet.update_cell(2, 3, 'Blue') #updates row 2 on column 3
Anche l’aggiornamento di un intervallo di celle è facile:
sheet.update('A2:B3', [["Not Ford", "Not Lancia"], ["Nothing", "Not"]])
Nota: puoi aggiungere il tuo foglio aggiornando le celle vuote a cui desideri aggiungere i dati utilizzando anche il metodo update () .
Formatta le intestazioni dei tuoi Fogli Google in grassetto se vuoi:
sheet.format('A1:C1', {'textFormat': {'bold': True}})
Puoi anche usare gspread insieme a panda e numpy. Dai un’occhiata ai documenti di gspread se desideri saperne di più sui vari colpi di scena e aggiustamenti intorno a questo.
Se stai scrivendo su un foglio importante che gestisci con altre persone, potresti prendere in considerazione una cella di sicurezza . Memorizza un valore in una determinata cella e poi leggi prima quella cella. Se i contenuti sono cambiati, altri hanno modificato o aggiunto colonne al foglio, quindi non puoi procedere con la scrittura. Ecco come puoi ottenerlo:
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')
È una buona pratica. Assicura che lo script non possa scrivere accidentalmente in una colonna già aggiornata. Tuttavia, non è un sostituto per backup adeguati.
Automatizza le tue attività sui fogli di calcolo con Python
Ora che conosci le basi, vai avanti e crea qualcosa di interessante! Invece di reinventare la ruota, puoi automatizzare le attività creando funzioni dedicate e richiamabili che leggono e scrivono nei tuoi fogli Google.
Inoltre, se utilizzi anche Microsoft Excel, puoi importare dati Excel in script Python e manipolare il foglio di calcolo Excel come preferisci.