Automazione per creare un documento all’interno di iCloud
Questo articolo è nato per caso. Volevo scrivere un articolo differente e, mentre mi accingevo a farlo, mi sono accorto che da iPad non c’era modo di creare un nuovo documento all’interno di una specifica cartella di iCloud (in parte non è corretto e lo vedremo nel corso dell’articolo … ma all’inizio non lo sapevo).
1. Alcune premesse …
Da gennaio ho fatto la sottoscrizione a 2 Tb di spazio su iCloud, dei motivi della mia scelta ne parlerò in una futura puntata del podcast.
Questo mi ha permesso di spostare tutti i miei dati su iCloud e tra l’altro anche gli articoli di Avvocati e Mac che prima gestivo via Dropbox.
Lo spostamento é avvenuto senza particolari problemi (ho copiato i documenti e le cartelle da Dropbox ad iCloud ottimizzando un po’ la gestione delle cartelle); mi sono tuttavia reso conto di un problema inaspettato: i limiti di sandboxing delle applicazioni di iOS su iCloud.
2. Cos’é e come funziona il sandboxing di iOS e le ripercussioni su iCloud
Ne ho parlato altrove e non mi voglio ripetere; in estrema sintesi iOS é fatto in modo tale da tenere ogni singola applicazione chiusa all’interno di un recinto (in inglese “sandbox" tradotto letteralmente scatola di sabbia).
Un’applicazione non conosce i contenuti di un’altra e, i documenti creati da una non sono direttamente accessibili dall’altra.
Questo approccio, maggiormente sicuro e "app-centrico", spesso sbigottisce gli utenti Mac o più in generale chi viene dal mondo dei PC.
Fino a poco tempo fa, inoltre, non c’era modo di aggirare questo sistema di protezione via iOS se non copiando un documento da un’app all’altra, ritrovandosi con un sacco di (inutili) duplicati.
Con le ultime versioni di iOS, dalla 11 in poi, é stata implementata per gli sviluppatori la possibilità di aggirare parte di queste limitazioni permettendo ad un’app di conoscere i documenti ed addirittura le cartelle di un’altra app. Il problema che persiste tuttavia é che, per fare ciò, é richiesto allo sviluppatore di apportare specifiche modifiche alla sua app ed implementando le nuovi funzioni di iOS … Come potrete immaginarvi ciò non viene posto in essere da tutti gli sviluppatori.
4. Il mio problema nel concreto
Fatte queste premesse posso spiegarvi il problema parzialmente assurdo che mi si é posto.
Volevo creare un nuovo file in Markdown all’interno della cartella di iCloud di Avvocati e Mac in cui salvo gli articoli che sto scrivendo. Se su Mac l’operazione é banale, sull’iPad non lo é.
Non é infatti possibile creare un nuovo documento da File (solo delle nuove cartelle) e tutte le varie applicazioni di iOS che scrivono in Markdown creano un nuovo documento all’interno dell’app stessa; non all’esterno come servirebbe a me (piccola anticipazione ho poi scoperto che iAWriter è in grado di creare un documento in qualche cartella di iCloud).
3. La mia soluzione
Cosa mi sono quindi inventato?
Un Comando Rapido che mi permetta di creare un documento proprio nella cartella che voglio io e, poi, successivamente con un applicazione che me lo permetta (nel mio caso iAWriter per iOS) posso iniziare a scrivere il documento.
Per fare tutto ciò ho però dovuto “barare” come al mio solito.
3.1 I limiti di Comandi Rapidi nella creazione ed accesso di documenti su iOS
Non é possibile creare da Comando Rapidi delle cartelle o dei documenti all’interno di iCloud, solo nella sottocartella /Shortcuts/
(ovvero il nome inglese di Comandi Rapidi).
Così non accade per il comando di creazione / salvataggio di un documento in Dropbox.
Cosa ho quindi pensato di fare?
3.2 Aggirare il problema creando il documento dal Mac via SSH
Come dicevo all’inizio di questo articolo creare un documento su macOS é semplicissimo … ho quindi deciso di risolvere il mio problema approfittando della possibilità di collegarsi ad un Mac via SSH di Comandi Rapidi.
3.3 Creare un documento attraverso la riga di comando
Come vi ho raccontato altrove nell’ultimo periodo mi sto “sporcando” le mani con il [Terminale][1].
Il comando che si usa per creare un documento via Terminale é semplicissimo; é il comando touch
.
Basta inserire dopo il comando il nome del documento e la sua estensione ed il documento verrà creato (di fatto viene creato un documento vuoto ma poco importa).
3.4 Dove si trova veramente sul Mac la cartella di iCloud
L’altro scoglio da affrontare é trovare l’effettiva cartella in cui si trovano i documenti salvati in iCloud. Potrebbe sembrare contro intuitivo (ed effettivamente lo é) ma se nel Finder trovate facilmente la cartella iCloud andando ad esaminare il contenuto della vostra Home Directory via terminale (usando il comando ls
) non troverete nessuna cartella con questo nome.
rt.apple.com/it-it/guide/terminal/welcome/mac
Stesso risultato anche se digitaste ls -a
ovvero il comando per stampare a schermo anche i documenti e le cartelle nascoste (in Unix come in macOS, che ne è una derivazione, i file nascosti sono preceduti da un “.”).
I documenti e le cartelle custodite in iCloud (l’informazione si trova facilmente facendo una ricerca su internet) si trovano altrove, nella seguente cartella: ~/Library/Mobile\ Documents/com~apple~CloudDocs/
Scoperto l’arcano é possibile creare un comando rapido che crei istantaneamente un documento all’interno di iCloud.
Di seguito vedete il comando rapido che ho creato.
Alcune necessarie precisazione:
- Io antepongo sempre la data nel formato ANNO-MESE-GIORNO ad ogni documento che genero; nel caso specifico ogni articolo che scrivo é pensato per una specifica data di pubblicazione (abitualmente al lunedì) per cui con i primi due comandi richiedo la data da anteporre al nome e la converto nel formato ISO 8601 (ovvero ANNO-MESE-GIORNO).
- Fatto ciò ho inserito un comando per richiedere il nome da dare al documento da creare.
- A questo punto con il comando “Testo” posso combinare la data ed il nome dell’articolo ed aggiungere l’estensione del file che, nel mio caso specifico, é “.md” ovvero Markdown; unica particolarità in questo comando é che ho usato le Variabili Magiche di Comandi Rapidi per estrarre i dati dei precedenti comandi.
- Il comando “Sostituisci testo” infine esegue una semplice operazione ovvero sostituire agli spazi presenti nel testo così creato “\ “. Questo perché a terminale uno spazio viene letto come conclusione di un comando o di un argomento ed é necessario anteporre un backslash, ovvero una barra rovesciata, allo spazio per dire al Terminale che lo spazio deve essere letto come uno spazio tra parole.
- L’ultimo comando si occupa di fare un collegamento SSH al mio Mac (usando l’indirizzo IP della macchina, la porta 22 che é dedicata al collegamento SSH ed inviando il nome utente e la password per fare il log-in, ovvero l’accesso, al Mac); se il collegamento é andato a buon fine viene passato il comando
touch
e viene creato il documento con la data ed il nome che ho scelto all’intero della cartella iCloud da me specificata.
Di seguito vedete un breve video dimostrativo del procedimento che, di fatto, é istantaneo.
[INSERIRE VIDEO - da rifare con audio]
4. Una possibile soluzione alternativa se non si può accedere al proprio Mac via SSH: Hazel
Collegarsi via iPad o iPhone al proprio Mac via SSH non é un’operazione per tutti, me ne rendo conto. Devo però segnalare che, non é nemmeno una cosa così complessa come potrebbe sembrare (se qualcuno fosse interessato lasci un commento qui sotto e potrei mettermi a creare una piccola guida su come attivare il collegamento SSH in macOS).
Ad ogni buon conto, se questo metodo non facesse al caso vostro, esiste un’alternativa anche se relativamente macchinosa.
Invece di creare il documento con il collegamento SSH potreste utilizzare il comando “Salva File” che abbiamo visto all’inizio dell’articolo all’interno di una sottocartella /Shortcuts/nome_a_vostro_piacimento/
ed utilizzare una regola di Hazel che tenga monitorato quella cartella e, quando trova un nuovo documento al suo interno, lo sposti altrove all’interno di iCloud nella cartella desiderata.
Questo metodo é simile a quello che vi ho presentato inizialmente ma richiede un po’ più di tempo al documento per essere spostato; Hazel abitualmente é molto solerte nel tenere monitorate le cartelle ma non é immediato.
5. Aprire (e creare) il documento sul posto su iOS
Concludo l’articolo dimostrandovi l’ultimo, essenziale passo di questo flusso di lavoro sull’iPad: l’apertura sul posto del documento creato.
Con il termine apertura sul posto (“open in place” con la terminologia inglese di Apple) mi riferisco alla funzione, presente in alcune applicazioni di iOS, di aprire un documento contenuto non all’interno dell’applicazione stessa e modificarlo senza copiarlo all’interno dell’applicazione.
Attualmente utilizzo l’app iAWriter a tale scopo. Come dicevo ad inizio articolo non tutte le applicazioni supportano questa opzione su iOS.
Vediamo quindi come aprire il nostro documento appena creato.
Una volta aperto iAWriter scegliamo l’opzione “Apri…” come mostrato in figura sottostante (punto 1).
A questo punto si aprirà un menù contestuale di File in cui potrete scegliere di aprire un documento contenuto all’interno di iCloud (in una qualsiasi delle sue cartelle) così come in un qualsiasi Document Provider.
6. Creare un documento in una cartella qualsiasi di iCloud attraverso iAWriter
Ve lo anticipavo all’inizio dell’articolo, mentre stavo ultimando lo stesso, mi sono accorto che è possibile fare la stessa cosa direttamente dall’app.
Come potrete vedere dall’immagine sottostante é possibile creare un nuovo documento in iAWriter direttamente all’interno di una cartella di iCloud.
Tuttavia l’inserimento della data deve essere fatto manualmente ed all’interno dell’applicazione stessa.
Credo che il mio metodo, anche se più arzigogolato, sia più flessibile e personalizzabile.
In conclusione
In questo articolo spero di avervi fatto vedere come sia possibile interagire grazie a Comandi Rapidi con il Terminale di macOS ed automatizzare alcuni compiti.
Ne ho anche approfittato per spiegarvi alcuni comandi base del Terminale che, spero, potranno tornarvi utili nel futuro.
Come si vede dalla conclusione dell’articolo sto ancora imparando ad utilizzare iAWriter per iOS; per ora mi ci trovo bene anche se punto ad utilizzare Vim anche su iPad (ma questa è una storia per un’altra volta!).