J'ai le code AppleScript suivant qui fait basculer la direction de défilement sur le trackpad:
tell application "System Preferences"
activate
set current pane to pane "com.apple.preference.trackpad"
end tell
tell application "System Events"
tell process "System Preferences"
click radio button "Scroll & Zoom" of tab group 1 of window "Trackpad"
click checkbox 1 of tab group 1 of window "Trackpad"
end tell
end tell
tell application "System Preferences"
quit
end tell
Ce script s'exécute sans problème lorsque le bouton "Lecture" de Automator est utilisé pour l'exécuter. Cependant, lorsque je crée un service qui l'exécute et que je lui attribue un raccourci clavier, celui-ci échoue via le raccourci clavier.
En le plaçant dans un try
bloc avec un rapport d’erreur, on obtient:
Automator Runner n'est pas autorisé à accéder à l'assistance.
Erreur numéro-1728
J'ai trouvé Automator Runner.app et lui ai donné un accès assisté à l'aide des instructions trouvées ici .
Il apparaît maintenant avec une case à cocher dans la liste des applications avec accès assisté:
Cependant, le problème persiste. Je continue à recevoir le même message m'avertissant que Automator Runner is not allowed assistive access.
lorsque j'essaie d'exécuter le script à l'aide de la commande clavier du service qui l'exécute.
Mise à jour
Je viens de réussir à implémenter ce script alternatif pour accomplir la même chose, mais cela ne fonctionne également que lorsque Automator a le focus et le même problème lorsqu'il ne le fait pas:
tell application "System Preferences"
reveal anchor "trackpadTab" of pane "com.apple.preference.trackpad"
end tell
tell application "System Events" to tell process "System Preferences"
click checkbox 1 of tab group 1 of window 1
end tell
quit application "System Preferences"
la source
Réponses:
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
Script Shell
(peut également provenir d'une action Automator)
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.
la source
Je suppose que vous n’avez peut-être pas vraiment de problème pouvant être "débogué".
Lisez ce Guide de macosxautomation.com sur la façon d'avoir des applets qui ne tiennent pas en permanence leur « permission » de courir, être acceptée par Mac OS X.
L'astuce consiste à installer un fichier ResourceRules-ignoring-Scripts.plist spécial dans lequel vous vous connectez et enregistrez votre application (let). (Mais lisez l'AVERTISSEMENT sur cette page Web!)
La raison en est que certaines applications enregistrent des informations "en elles-mêmes" et ne seront donc pas identiques / reconnues lors de leur exécution.
(Mais quoi qu'il en soit: même si les conseils du Guide ne vous aident pas , ils pourraient quand même intéresser d'autres personnes ...)
la source
Je sais que c'est une vieille question, mais je faisais face à ce problème tout à l'heure et j'ai réussi à contourner le problème. J'ai donc pensé poster une réponse.
J'avais lu ailleurs que l'ajout
Automator Runner.app
au volet Confidentialité / Accessibilité des Préférences Système n'empêcherait pas l'erreur. Je ne l'ai donc pas essayée, mais ce qui a fonctionné pour moi a été de coller l'intégralité du flux de travail dans un nouveau document de flux de travail "Application". Je l'ai sauvegardée au même endroit que le service, puis j'ai créé un nouveau flux de travaux "Service" qui ne comportait qu'une seule chose: exécuter la nouvelle application que je venais de créer.J'ai ensuite ajouté cette application au volet Confidentialité / Accessibilité des Préférences Système. Maintenant, lorsque j'exécute le service, l'erreur d'autorisations ne s'affiche pas.
la source
Pas une réponse, mais ...
Pour tenter de déboguer, je déconstruirais le script en ses composants, donc divisé en gros en
& test pour toute erreur
Puis ajouter
revérifier
& jusqu'à ce que vous trouviez le point d'échec
Une possibilité serait d'inverser les événements et les préférences système dans l'ordre de votre ordre actuel, mais ce n'est qu'un coup dans le noir.
Espérons que quelqu'un avec de meilleures côtelettes de pommes que je fournirai une meilleure solution.
la source
tell
bloc s'exécute sans provoquer l'erreur. Il apparaît lorsque le bloc Événements système et Préférences système est ajouté.