Remarque importante concernant les actions AppleScript dans les flux de travaux Automator.
J'espère que cela aidera les autres à la recherche d'une solution.
Accès d'assistance
Si votre script utilise des choses comme tell application "System Events"
obtenir des données d'interface utilisateur à partir de fenêtres d'applications ou envoyer des frappes virtuelles, etc., il faudra alors un "accès d'assistance".
Cela peut s'appeler différentes choses dans différentes versions de Mac OS, mais se trouve généralement dans Préférences Système> Sécurité et confidentialité> Confidentialité> Accessibilité , sous "Autoriser les applications ci-dessous à contrôler votre ordinateur" .
Permettre l' accès d' assistance pour les Automator et éditeur de script applications permettra à vos flux de travail et des scripts pour exécuter à partir de ces outils, mais pas lors de l' enregistrement comme des applications autonomes. En théorie, l'activation de l'accès à n'importe quelle application devrait également lui permettre de parler à System Events.
Problème avec AppleScripts exécuté à partir des actions Automator
Mais comme beaucoup l'ont découvert , Automator rencontre souvent des problèmes lors de la création d'applications pouvant bénéficier d'un accès d'assistance, lorsque ces applications contiennent du code AppleScript. Sans parler du fait que de tels droits ne peuvent pas être accordés aux services , car ils ne sont pas des applications.
solution de contournement
Cependant, vous pouvez créer des applications AppleScript autonomes à partir de l' application Script Editor et leur accorder un accès d'assistance sans problème.
Vous pouvez ensuite exécuter ces applications dans le cadre d'un flux de travail Automator ou shell, comme suit:
Action AppleScript dans Automator
do shell script "osascript -e 'tell application \"My Granted App Name\" to activate'"
Script Shell
(peut également provenir d'une action Automator)
osascript -e 'tell application "My Granted App Name" to activate'
Cela fonctionne également pour la création de services dans Automator. Demandez simplement à votre service d’exécuter l’application avec autorisation, au lieu d’essayer d’ajouter du code requérant une autorisation au service lui-même.
Notez que l' tell app
appel ne nécessite pas l'extension ".app", ni même un chemin. Si vous avez plusieurs applications avec le même nom, il devrait y avoir un moyen d'obtenir l'application par son identifiant de paquet, etc.
Autres IDE
Je ne sais pas s'il s'agit d'un problème spécifique à Automator, car je n'ai pas essayé d'appeler des AppleScripts sophistiqués à partir d'applications créées avec des outils autres que celui-ci et Script Editor. Dans les deux cas, ce qui précède devrait fonctionner pour d’autres IDE / compilateurs / etc. ainsi que.
Reconstruire votre application
Dans la plupart des cas, éditer et reconstruire une application donnée nécessite un accès à nouveau. Il est donc utile de tout tester dans Automator / Script Editor avant de créer l’application autonome, afin de vous éviter les ennuis. Si votre script est appelé par un projet plus important que vous recompilez régulièrement, il est préférable de le transformer en sa propre application pour lui accorder l'accès une fois, puis exécutez l'application à partir de votre projet plus grand. Au moins jusqu'à ce que le plus grand projet soit finalisé.
Pour les applications utilisées par plusieurs scripts, vous pouvez les conserver dans un emplacement cohérent, comme un dossier personnalisé / Applications / Outils / Scripts . Cependant, rappelez-vous que tout code tiers peut lancer des applications et ainsi activer vos scripts potentiellement sensibles. Il est important de prendre en compte les implications en termes de sécurité lors de la création de code utilisant un accès d'assistance.
Quand re-accorder ne fonctionne pas
Il arrive que la réattribution d'une application reconstruite ne "prenne" pas. Dans de tels cas, renommer l'application et l'ajouter de nouveau via les préférences système permet généralement de résoudre ce problème. Vous devriez être en mesure de renommer l'application d'origine en son nom plus tard. Il s'agit d'un problème avec la manière dont Assistive Access met en cache sa liste d'applications et le nom de fichier et / ou le chemin sont impliqués d'une manière ou d'une autre. Si quelqu'un sait comment vider cette mémoire cache, veuillez ajouter un commentaire. ce serait très utile.