Important note regarding AppleScript actions in Automator workflows.
Hopefully this helps others who are looking for a fix.
Accesso assistito
Se il tuo script usa cose come tell application "System Events"
per ottenere dati di UI da finestre di app o inviare sequenze di tasti virtuali, ecc., allora richiederà "accesso di assistenza".
Questo può essere chiamato cose diverse in diverse versioni di Mac OS, ma generalmente si può trovare in Preferenze di Sistema > Sicurezza e amp; Privacy > Privacy > Accessibilità , in "Consenti alle app in basso di controllare il tuo computer" .
Abilitare l'accesso assistivo per le applicazioni Automator e Script Editor consentirà ai flussi di lavoro e agli script di essere eseguiti da tali strumenti, ma non quando vengono salvati come app autonome. In teoria, abilitare l'accesso per qualsiasi app dovrebbe anche lasciarlo parlare con System Events.
Problema con AppleScript eseguito da Automator Actions
Ma come molti hanno scoperto , Automator spesso ha problemi a creare app a cui può essere concesso l'accesso assistito, quando tali app contengono codice AppleScript. Per non parlare del fatto che non è possibile concedere tali servizi a tutti , poiché non sono app.
Soluzione
Tuttavia, puoi creare app AppleScript standalone dall'applicazione Script Editor e concedere loro l'accesso assistivo senza problemi.
Puoi quindi eseguire tali app come parte di un Automator o di un workflow della shell, come questo:
Azione di AppleScript in Automator
do shell script "osascript -e 'tell application \"My Granted App Name\" to activate'"
Shell Script
(può anche provenire da un'azione di Automator)
osascript -e 'tell application "My Granted App Name" to activate'
Questo funziona anche per la creazione di servizi in Automator. Fai in modo che il tuo servizio esegua l'app concessa in base alle autorizzazioni piuttosto che provare ad aggiungere il codice che richiede l'autorizzazione al servizio stesso.
Tieni presente che la chiamata a tell app
non richiede l'estensione ".app" o persino un percorso. Se hai molte app con lo stesso nome, dovrebbe esserci un modo per ottenere l'app tramite il suo identificatore di bundle, ecc.
Altri IDE
Non sono sicuro che si tratti di un problema specifico di Automator, dal momento che non ho provato a chiamare AppleScript di fantasia da app create con strumenti diversi da quello e Script Editor. In entrambi i casi, quanto sopra dovrebbe funzionare per altri IDE / compilatori / ecc. pure.
Ricostruzione della tua app
Nella maggior parte dei casi, la modifica e la ricostruzione di un'app concessa richiedono che venga nuovamente concesso l'accesso. Quindi aiuta a testare tutto bene in Automator / Script Editor prima hai creato l'app standalone, per risparmiarti il problema. Se il tuo script è chiamato da un progetto più ampio che ricompili di routine, è meglio trasformare quello script nella sua app per concederne l'accesso una volta, ed eseguire l'app dal tuo progetto più grande. Almeno fino alla conclusione del progetto più grande.
Per le app utilizzate da più script, puoi tenerle in un posto coerente come una cartella / Applicazioni / Strumenti / Script personalizzata. Tuttavia, ricorda che qualsiasi codice di terze parti può avviare app e quindi attivare i tuoi script potenzialmente sensibili. È importante considerare le implicazioni sulla sicurezza durante la creazione di codice che utilizza l'accesso assistito.
Quando ri-concessione non funziona
Ci sono momenti in cui la ri-concessione di un'app ricostruita non "prende". In questi casi, rinominare l'app e riaggiungerla tramite le Preferenze di sistema solitamente risolve questo problema. Dovresti essere in grado di rinominare l'app sul suo originale in un secondo momento. Questo è un bug relativo al modo in cui Assistive Access memorizza nella cache il proprio elenco di app e il nome file e / o il percorso sono in qualche modo coinvolti. Se qualcuno sa come cancellare questa cache, per favore aggiungi un commento; sarebbe molto utile.