Nonostante abbia già introdotto alcuni miglioramenti che ho fatto alla mia configurazione di Obsidian con alcuni articoli precedenti, adesso voglio migliorarlo ancora. Riesco a registrare quasi tutto quello che accade nella mia vita, ad eccezione delle spese e degli allenamenti. Entrambi sono salvati su Google Sheets e attualmente non esiste un modo di importare automaticamente i dati da Google Sheet in Obsidian, quindi voglio crearmelo. Non sono così bravo a programmare, almeno non come un software engineer, quindi penso sia una sfida interessante, oltre che con un fine piuttosto utile.
Disclaimer: so che il codice alla fine può non essere uno dei migliori e dei più efficienti, quindi se dovesse avere qualsiasi consiglio mandatemi una mail. Ho iniziato il progetto diversi mesi fa con una prima bozza funzionante. Adesso, dopo aver completato CS50 voglio fare alcuni miglioramenti alla struttura e renderlo maggiormente leggibile e replicabile. In questo articolo parlerò del template per salvare i miei allenamenti all’interno di Obsidian spiegando come sono arrivato al codice finale e come leggere i dati da Google Sheets. Userò Python, facile da usare e con molte librerie utili.
Obiettivo
Voglio convertire il foglio di calcolo in una serie di file in markdown dove voglio inserire le informazioni per le ricerche con dataview
/dataviewjs
, così da leggere il tutto all’interno di Obsidian. Inoltre, voglio anche la possibilità di ricercare i singoli dati numerici (di peso, serie, ripetizioni) per creare dei grafici. Per poter fare le ricerche devo poter inserire i dati nell’intestazione del file con la sintassi YAML, poi lo richiamerò con dataview
. Detto così sembra semplice, ogni riga è un esercizio da cui devo creare un file con tutte le informazioni come data, tipologia, serie, ripetizioni e peso. Ogni file sarà in una cartella separata secondo la data della seduta di allenamento.
|-- Workout/
| |-- day 1/
| | | -- exercise1
| | | -- ....
| | | -- exercise n
|
| |-- day 2/
| | | -- exercise1
| | | -- ....
| | | -- exercise n
|
| |-- ....
|
| |-- day k/
Non sembra così complesso. Ho bisogno di creare un template per il file markdown, essenzialmente del testo, al cui interno inserire i dati. Inoltre, essendo in Python posso direttamente estrarre dati numerici come media o deviazione standard. Il foglio di calcolo è tale per cui in ogni riga sono presenti:
- Data
- Nome della giornata (A, B, C, …)
- Nome dell’esercizio
- Serie e ripetizioni
- Peso
- Funzioni automatizzate che dividono le ripetizioni secondo 5 colonne (ciascuna per ogni serie). Ogni colonna è riempita solo se quell’esercizio richiede quel numero di serie. Queste funzioni sono inserite per creare più facilmente alcuni grafici in Google Sheets ma si riveleranno piuttosto utili.

Devo però leggere questi dati in Python. Ho trovato qualcosa cercando online e sembra sia possibile con gspread
, un API Google Sheets in Python, che quindi dovrebbe permettermi di leggere il foglio di calcolo all’interno dell’ambiente di Python. Questo viene poi integrato con diverse funzionalità e diversi template per descrivere gli esercizi e le giornate di allenamento, nonché creare grafici e tabelle riepilogative con dataview
e chartjs
. Infine il codice viene revisionato e ottimizzato per creare un pacchetto Python facilmente adattabile ad ogni scopo e sistema operativo (per le diverse directory di Obsidian).
Programmazione in Python per Obsidian
Per maggiori informazioni su come ho creato questo programma di rimando alla versione inglese di questo articolo contenente maggiori informazioni e una descrizione accurata di tutto il processo.
Adesso posso automatizzare lo script in modo che venga avviato automaticamente sincronizzando i miei file su Google Sheets con Obsidian.

Il codice completo è disponibile alla repository GitHub: