Automatizzare progetti in OmniFocus 2 - parte prima
Con sorpresa, il mio articolo su OmniFocus e Todoist ha riscosso un certo successo. Siccome l’argomento Task Manager mi è particolarmente caro, ho deciso di scrivere alcuni articoli sul punto.
L'articolo di oggi è una prova di concetto ma credo possa essere interessante sia per gli avvocati (l'esempio è specifico della pianificazione giudiziale dell'attività da legale) sia per altri soggetti (applicando e modificando i concetti che vi illustrerò in seguito).
L'articolo affronterà la creazione di un sotto-progetto in OmniFocus utilizzando un'automazione a mezzo di Workflow.
Per chi fosse interessato ad approfondire David Sparks ha creato un'ottima video-guida (in inglese) su OmniFocus da cui ho imparato il grosso di quel che vi scrivo qui sotto.
Mentre ultimavo l'articolo e mi avvicinavo a quasi 4000 parole, grazie al suggerimento del prezioso Roberto Marin di MArCh, ho deciso di spezzare quest’articolo in due parti (forse tre se riesco a sviluppare un'ulteriore automazione).
In questa prima parte vi introdurrò i concetti generali degli strumenti di automazione di OmniFocus in iOS e, nel prossimo articolo, raffinerò il risultato finale ottenuto in questo articolo utilizzando le funzioni di manipolazione delle date di Workflow.
L’importanza di automatizzare le attività complesse
L’attività dell’avvocato, come di molte altri mestieri, richiede la gestione di un certo grado di complessità. Spesso un avvocato deve gestire decine, se non centinaia, di posizioni contemporaneamente e, siano esse posizioni giudiziali siano esse stragiudiziali, le scadenze sono imposte da termini di legge o necessità specifiche della singola pratica.
Tutte queste attività e scadenze si accumulano. L’attività lavorativa non si limita quindi a fornire semplicemente la propria attività professionale ma richiede un lavoro (invisibile al cliente) di organizzazione. Le “mitiche” agende legali di carta sono uno strumento inefficiente per gestire la mole di dati necessari ad organizzare uno studio legale. In questi casi la tecnologia, con la sua flessibilità ed ubiquità (smartphone in particolare), è un utile alleata.
Applicazioni come OmniFocus, Todoist o Things 3 offrono enormi vantaggi a chi vuole gestire in modo dinamico le scadenze, gestire in modo centralizzato i propri progetti lavorativi e catturare velocemente le attività da svolgere all'interno di questi progetti.
A volte tuttavia è necessario catturare attività complesse; un esempio “tipico” della professione dell'avvocato è quello di mettere in scadenza le memorie exart. 183, comma 6, cpc. Per chi non è avvezzo alla professione di avvocato le memorie 183 cpc sono atti giudiziari che, a scadenza di 30, 60 e 80 giorni da un termine iniziale, devono essere depositate (e precedentemente scritte) a pena di inammissibilità delle stesse. Sono le c.d. “memorie istruttorie” in cui l'avvocato, per conto della parte che rappresenta, precisa ulteriormente le conclusioni dell'atto introduttivo del giudizio, deposita documenti e richiede l'assunzione dei mezzi di prova orale e contro-deduce sui mezzi istruttori richiesti dalla controparte.
Le memorie 183 cpc richiedono, prima della loro predisposizione, la strutturazione di un piano organizzativo complesso che oltre alle 3 specifiche scadenze comporta dei preavvisi prima delle scadenze stesse (scrivere un qualsiasi documento richiede tempo), spesso coordinarsi con il cliente per reperire dati e documenti nonché reperire gli atti scritti dalla parte avversaria ed esaminarli per poi contro-dedurre (se necessario).
Questa attività non si conclude solo nell'inserire 3 scadenze avanti nel tempo ma, potenzialmente, strutturare un complesso programma di lavoro.
In questi casi automatizzare l’inserimento, all'interno di un progetto di questa attività diventa un utile risparmio di tempo nonché un modo per standardizzare le attività da svolgere e non doverci pensare più su.
A me piace pensarla come una checklist di attività da controllare di svolgere. Io sono diventato un fan delle checklist da quando ho letto questo libro. In un mondo sempre più complesso le checklist sono un ottimo strumento per semplificarci la vita. Ma non voglio ulteriormente divagare.
In quest’articolo vi spiegherò come, inserendo solo la data iniziale del computo del termine (grazie OmniFocus 2 e Workflow) è possibile inserire in automatico non solo le scadenze delle 3 memorie ma anche attività da svolgere prima e dopo le singole scadenze.
1. Quanto costa OmniFocus e provarla gratuitamente
Rispetto a molte applicazioni per iOS è possibile provare gratuitamente per due settimane la versione di OmniFocus per iOS. Dopo le due settimane, tuttavia, dovrete acquistare l’app che, vi avverto, ha un costo significativo:
- € 43,99 per la versione Standard;
- € 21,99 per passare alla versione Pro o, se volete comprare direttamente quest’ultima versione, spendere direttamente € 64,99.
OmniFocus è un'applicazione professionale nel senso che gli utenti di questa applicazione la usano per la gestione del loro lavoro quotidiano e una simile spesa è giustificata. Se siete indecisi sull'utilità di questo programma io vi suggerisco di utilizzare le due settimane di prova quando avete un po' di tempo da dedicare a questa applicazione che, non ve lo nego, ha una curva di apprendimento ma che può dare molte soddisfazioni.
Quale versione acquistare la Standard o la Pro?
Non posso entrare nel dettaglio, per non allungare troppo questo articolo, personalmente su iOS ho scelto la versione Standard di OmniFocus mentre sul Mac ho preferito la versione Pro (OmniFocus infatti può sincronizzare i dati tra i vari sistemi operativi di Apple ed i differenti device in nostro possesso). Segnalo da ultimo che la versione per macOS deve essere acquistata separatamente (Versione standard ad € 44 con un sopraprezzo per la versione Pro di altri 44 euro) .
2. OmniFocus 2 e le automazioni in iOS
OmniFocus per Mac (nella versione Pro) supporta AppleScript e da sempre è possibile (con un certo sforzo) automatizzare l'applicazione. Nel corso del 2016OmniGroup ha introdotto le automazioni anche nella versione per iOS di OmniFocus attraverso il supporto:
- Del linguaggio di markup pensato per TaskPaper;
- Azioni eseguibili attraverso URL scheme.
L'introduzione di queste funzionalità hanno reso a la versione per iOS un interessante strumento per creare automazioni in un modo relativamente semplice (quantomeno rispetto ad AppleScript). Prima di vedere in dettaglio come procedere a creare le nostre automazioni (nel caso specifico creare una serie di scadenze per la predisposizione e deposito delle memorie 183 cpc) è necessario fare alcune premesse.
3. Cos’è TaskPaper ?
TaskPaper è un’interessante applicazione per Mac. Permette la creazione, in modo semplice e diretto, di liste di cose da fare scritte in testo semplice. Come il MarkDown è un linguaggio di formattazione per scrivere in formato testo, TaskPaper è linguaggio di formattazione, con regole semplici ed intuitive, che permette di organizzare liste di attività o progetti associando (usando solo testo) contesti, scadenze etc …
L'applicazione TaskPaper si occupa, come in molte applicazioni di MarkDown, di visualizzare le informazioni aggiuntive contenute nel testo formattato secondo i suoi standard. Ma, essendo un linguaggio di Markup fatto di semplice testo, queste liste di attività sono facilmente trasportabili in differenti contesti.
In questo modo, ad esempio, applicazioni come Editorial (su iOS) hanno implementato questo linguaggio di Markup sfruttandone le potenzialità.
Essendo semplici file di testo, inoltre, le liste di scritte in TaskPaper sono facilmente sincronizzabili tra device attraverso il cloud (un file di testo pesa pochi kb).
4. Workflow e la semplificazione degli URL schemes
Di URL scheme ho parlato più volte (al punto 4.2 di questo articolo trovate una breve spiegazione). Quello di cui vi voglio parlare oggi è la possibilità di utilizzare questi complessi strumenti attraverso qualcosa di più semplice come, nel nostro caso, Workflow. Workflow è un’applicazione che semplifica, rendendola visuale, l’automazione di operazioni in iOS. L’app è stata acquistata l’anno scorso da Apple stessa ed ora è scaricabile gratuitamente dall’App Store.
Prima dell'acquisizione, quando la OmniGroup ha sviluppato le prime funzioni di automazione di OmniFocus in iOS, gli sviluppatori di Workflow hanno creato delle azioni specifiche che ci permettono di usare gli URL schemes di OmniFocus in modo trasparente: ovvero senza dover conoscere e scrivere questo tipo di linguaggio relativamente oscuro.
5. Creare l’inserimento automatico di un sotto-progetto in OmniFocus con Workflow
Vediamo quindi come creare la nostra automazione.
5.1 Le due azioni di Workflow per OmniFocus
Esistono solo due azioni in Workflow per interfacciarsi con OmniFocus
- Add OmniFocus item: ( Aggiungi un nuovo campo in OmniFocus ) la prima azione permette di inserire una nuova attività in OmniFocus (punto 1 immagine sottostante). È l'azione più semplice e permette di inserire la maggior parte dei parametri.
- Add TaskPaper to OmniFocus: ( Aggiungi TaskPaper in OmniFocus ) la seconda azione, apparentemente, sembra "non fare nulla" tuttavia attraverso quest'azione è possibile passare un file di testo, formattato con le caratteristiche di TaskPaper, e creare progetti o sotto-progetti complessi (punto 2 dell'immagine sottostante).
Nell'articolo di oggi useremo questa seconda azione.
5.2 Progettare un’automazione
Parlerò più in dettaglio di come ho creato questa automazione nella prossima newsletter; qui voglio segnalare come progettare un'automazione, soprattutto se relativamente complessa come quella che vi illustrerò a breve, richiede un'attività preliminare:
- individuare tutte le fasi per svolgere un determinato compito (da automatizzare);
- risolvere i problemi tecnici di ogni singola fase.
5.3 Come creare una serie di attività in OmniFocus attraverso TaskPaper
La base per creare l'azione in Workflow, come vi anticipavo, è tutta gestita attraverso la creazione delle attività da svolgere in testo semplice con TaskPaper.
Vediamo, velocemente, le regole di base (creare un'attività con il linguaggio di TaskPaper è relativamente semplice).
Qui trovate i riferimenti (in inglese) per le automazioni con URL schemes di OmniFocus.
Per creare un'attività basta digitare l'oggetto dell'attività su una riga di testo.
Sotto-progetto Memorie 183 cpc
Per per creare delle attività nidificate basterà creare su più righe le attività e per “indentare” le attività anteporre un TAB alle sotto-attività
Sotto-progetto Memorie 183 cpc
Scade memoria n.1
Scade memoria n.2
Scade memoria n.3
Potremo a questo punto inserire le date delle scadenze utilizzando il tag@due(DATA) che nell'interfaccia di OmniFocus in italiano è tradotto come “In scadenza”.
Sotto-progetto Memorie 183 cpc
Scade memoria n.1 @due(25 marzo)
Scade memoria n.2 @due(19/04)
Scade memoria n.3 @due(DATA)
Altro cosa che dovremo fare è differire l'attività. Infatti OmniFocus ogni volta che creiamo un'attività ce la rende "disponibile" è ovvio quindi che se abbiamo 2 scadenze non è un problema ma se ne abbiamo 100 non è comodo vedere tutto in una volta. Utilizzando il tag@defer(DATA) possiamo fare in modo che l'attività in scadenza il 25 marzo 2018 si presenti “visibile” in OmniFocus solo 10 giorni prima.
Sotto-progetto Memorie 183 cpc
Scade memoria n.1 @defer(25/03 -10d) @due(25 marzo)
Scade memoria n.2 @due(19/4)
Scade memoria n.3 @due(DATA)
Analizziamo un attimo in dettaglio la riga “ Scade memoria n.1 @defer(25/03 -10d) @due(25 mar)\ ”. Ci rendiamo conto anche di due funzione interessanti di OmniFocus:
- Possiamo inserire le date in formati differenti – sia 25/03 che 25 marzo;
- È possibile fare delle operazioni matematiche con le date: nello specifico è possibile sottrarre da una data un numero specifico di giorni (nel -10d la “d” sta per day ovvero in italiano giorno N.d.R.), scrivendo quindi 25/03 -10d, di fatto OmniFocus inserirà nell'attività come data di “Rinviato fino a” il 15/03.
Oltre a quanto ho spiegato velocemente sin qui ci sono altre funzioni interessanti per creare dei modelli di attività con TaskPaper per OmniFocus. È possibile inserire un contesto utilizzando il tag @context(Albero specifico dei contesti) le bandierine utilizzando il tag @flagged. Non entro nel dettaglio perché dovrei anche spiegarvi come funzionano in OmniFocus queste funzioni (se di interesse scriverò un articolo).
Qui trovate tutti i tag supportati ad oggi da OmniFocus per TaskPaper.
Prima di passare oltre voglio segnalarvi un'ulteriore possibilità, forse non è utilissima per gli scopi attuali, ma credo sia un'utile conoscenza per chi voglia automatizzare OmniFocus. Con la formattazione TaskPaper è anche possibile inserire delle note nelle attività di OmniFocus.
Per creare una nota è necessario modificare parzialmente la formattazione iniziale che vi ho spiegato.
In particolare è necessario utilizzare la formattazione standard di TaskPaper; ovvero, prima del testo dedicato ad una specifica attività, aggiungere un trattino “-”.
Una volta fatto ciò, su una differente riga, indentate una nuova porzione di testo. Questa diventerà una nota di OmniFocus.
Di seguito vedete un esempio di testo con formattazione per le note. Nell'immagine sottostante, poi sulla destra vedete lo stesso testo in Editorial e, sulla sinistra, il risultato convertito in OmniFocus.
Sotto-progetto Memorie 183 cpc
- Scade memoria n.1 @defer(25/03 -10d) @due(25/3)
Questa è una nota
- Scade memoria n.2 @due(19/04)
- Scade memoria n.3 @due(DATA)
5.4 La check-list completa
Bene, ora che conosciamo le regole di base, creiamo qualcosa di più complesso.
Il mio esempio è solo a fini illustrativi (io non lo uso nella realtà), voi potrete modificarlo come meglio ritenete opportuno. Ho però cercato di mettere nell'esempio tutte le funzioni possibili proprio per farvi vedere le potenzialità del sistema.
Sotto-progetto Memorie 183 cpc
Scade termine per memoria 183 n.1 @context(Lavoro : prepara atto) @defer(«data» +20d) @due(«data» +30d)
scaricare da pst.giustizia.it memorie avversarie @defer(«data» +31d)
Recuperati i documenti dal cliente ??? @due(«data» +55d)
Sentire cliente per documenti da produrre @context(Telefonate) @note(questa è una nota)
Esaminare documenti inviati dal cliente
Scade termine per memoria 183 n.2 @context(Lavoro : prepara atto) @defer(«data» +50d) @due(«data» +60d) @flagged
scaricare da pst.giustizia.it memorie avversarie @defer(«data» +61d)
Scade termine per memoria 183 n.3 @context(Lavoro : prepara atto) @defer(«data» +61d) @due(«data» +80d)
Di seguito vedete a sinistra il risultato dell'inserimento all'interno di OmniFocus e sulla destra invece quanto creato in Editorial.
5.5 Usare Editorial per testare ed importare un testo TaskPaper in OmniFocus
Apro e chiudo una piccola parentesi necessaria per farvi capire meglio quanto illustrato fino ad ora.
Come vi ho detto, tra le possibilità di automazione di OmniFocus, è possibile utilizzare gli URL schemes. Tra gli esempi che gli sviluppatori di OmniFocus hanno dato è presente un workflow (flusso di lavoro) per Editorial che è possibile scaricare da qui. David Sparks utilizza nella sua video-guida questa app per spiegare (in modo visuale) le regole per utilizzare correttamente il linguaggio TaskPaper. Io, invece, scrivendo un articolo vi ho fatto vedere direttamente il testo e, qualche volta, la visualizzazione dei passaggi tra Editorial e OmniFocus.
In particolare ho utilizzato questo flusso di lavoro di Editorial per testare la scrittura iniziale della check-list per OmniFocus (non ho l'applicazione TaskPaper su Mac).
Una volta creato questo testo iniziale è possibile fare due cose:
- Creare dei segnaposto (Placeholder) in Editorial e creare un'automazione direttamente in questa app (Editorial è un'app a pagamento – ho quindi deciso di non inserire questa parte che viene spiegata in dettaglio nella video-guida di David Sparks); per chi fosse interessato ed avesse già Editorial per creare un segnaposto è sufficiente racchiudere del testo all'interno di “«” e “»”;
- Utilizzare Workflow (ora scaricabile gratuitamente dall'App Store – ho preferito questa soluzione gratuita) per implementare l'automazione come vedremo al punto successivo.
5.6 Il flusso di lavoro base per automatizzare le memorie 183 cpc in Workflow
Creare un modello di attività da inserire automaticamente in OmniFocus è piuttosto semplice in Workflow.
Di fatto, una volta che conosciamo la sintassi di TaskPaper possiamo utilizzare l'azione “Aggiungi TaskPaper in OmniFocus” (Add TaskPaper to OmniFocus) a cui passeremo un testo opportunamente formattato.
La cosa interessante è che, utilizzando Workflow, potremo inserire una data a nostro piacimento. Come farlo? Semplicissimo aggiungeremo una azione per chiedere l'input della data da parte dell'utente, e salveremo questa informazione in una variabile che inseriremo nel nostro testo formattato in TaskPaper.
Visto che OmniFocus riesce a “contare i giorni” avendo il nostro termine iniziale potremo conteggiare facilmente le scadenze future.
Di seguito vedete il flusso di lavoro di Workflow e qui potete scaricarlo.
5.7 Usare le Magic Variable in Workflow
Ho utilizzato una MagicVariable (che ho rinominato “Data”) per recuperare l'input digitato dall'utente quando viene eseguita la prima azione “Ask for input” (richiedi inserimento dati). Si sarebbe potuto recuperare il dato anche con un'azione “Set Variable” (Imposta variabile) ma avrebbe reso solo più complesso il flusso di lavoro.
Vediamo brevemente com'è possibile creare e personalizzare una MagicVariable.
Una Variabile Magica o MagicVariable è un contenitore di dati all'interno di un vostro flusso di lavoro. Abitualmente nei linguaggi di programmazione ed anche in applicazioni come Workflow è necessario creare e nominare una variabile e, una volta fatto ciò, riempirla di contenuto: nel nostro esempio la data di partenza del conteggio dei termini.
Recentemente gli sviluppatori di Workflow hanno inserito un sistema per ridurre questi passaggi che, essendo Workflow un app visuale, rendono i flussi di lavoro creati difficili da “leggere”. Grazie alle Magic Variabiles in Workflow, quando c'è un'azione che genera un contenuto all'interno del nostro flusso di lavoro, è possibile creare da questo dato magicamente una variabile.
Nel nostro caso l'operazione è relativamente semplice: facendo un TAP all'interno dell'azione Text (Testo) oltre a comparire la tastiera virtuale per digitare il testo comparirà una barra superiore con svariate opzioni.
Premete sulla bacchetta magica come indicato nell’immagine che segue.
A questo punto la rappresentazione del Workflow cambierà e verranno esposte le variabili temporanee create dalle azioni del vostro flusso di lavoro.
Come si vede nell'immagine sottostante.
Una volta inserita la nostra Magic Variable sarà possibile rinominarla (se vogliamo). Nell'immagine sopra vedete due Variabili magiche “Ask of Input” e “Data”. La prima variabile ha il suo nome originale, la seconda è quella che ho modificato io.
Ma come è possibile modificare il nome (e non solo) di una Magic Variable ?
Una volta selezionata la variabile comparirà il menù che vedete nell'immagine sottostante. Potrete quindi rinominare (Rename – punto 1 del''immagine) la variabile, Rivelare l'azione (Reveal Action – Punto 2 dell'immagine) e modificare la rappresentazione del contenuto della variabile (punto 3 dell'immagine).
5.8 Particolarità dell’azione Ask for Input e inserimento all'interno di un progetto specifico di OmniFocus
Due ulteriori segnalazioni importanti, per capire questo flusso di lavoro.
1. Nell'azione “Ask for input” ho preferito usare nella voce “Input Type” (tipo di dato) il formato testo (text), selezionare l'opzione “Date” (Data) sarebbe più corretto ma, per come è strutturata questa azione, comparirebbe al posto della tastiera la rotella per inserire una data che, personalmente, non trovo comoda. Inserendo l'opzione “Date” inoltre vi verrà presentata un'ulteriore voce “Granularity” dove potrete scegliere il formato della data (Data, Ora, Data e Ora), come si vede nelle immagini seguenti.
2. È possibile inserire il sotto-progetto all'interno di un progetto di OmniFocus. Questa possibilità (aggiunta di recente) rende le automazioni con Workflow molto potenti. è infatti possibili inserire le varie attività legate alle memorie 183 direttamente all'interno di una specifica pratica gestita in OmniFocus. Nell'immagine che segue vedete nel dettaglio la configurazione dell'azione ed il risultato in OmniFocus.
Potete scaricare qui il mio flusso di lavoro.
In conclusione
Se non siete un avvocato, quanto vi ho illustrato sin qui vi funzionerà perfettamente per inserire velocemente una serie di attività all'interno di uno specifico progetto.
Se invece siete un avvocato vi sarete resi conto di un problema di questo sistema: non tiene conto dei termini che scadono di sabato o domenica, in un giorno di festa o durante la sospensione feriale dei termini giudiziali.
Nel prossimo articolo vi illustrerò come risolvere, attraverso Workflow, il problema di posticipare al lunedì i termini che scadono di sabato o domenica. Credo che questa ulteriore funzionalità possa tornare comoda anche a chi non è avvocato e non vuole autogenerarsi scadenze nel weekend.
Se avrò tempo cercherò poi di creare un ulteriore flusso di lavoro in Workflow per tenere in conto il periodo di sospensione feriale e le festività (mentre scrivo queste righe però non ho ancora creato il flusso di lavoro anche se ho qualche idea su come risolvere il problema).
Come sempre se avete domande, idee o suggerimenti potete lasciare un commento qui sotto o scrivermi una email.
P.S. Alla fine l'articolo ha comunque superato le 3000 parole … 😇