Ne peut exécuter AppleScript d'Automator


7

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 trybloc avec un rapport d’erreur, on obtient:

Automator Runner n'est pas autorisé à accéder à l'assistance.

Erreur numéro-1728

entrez la description de l'image ici

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é:

entrez la description de l'image ici

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"

1728 est l'objet non trouvé, alors essayez de simplifier jusqu'à identifier l'objet non trouvé ou l'erreur d'accès.
Tetsujin

@Tetsujin Tous les conseils que vous pouvez fournir sur la façon dont cela est fait seraient grandement appréciés.
Keyslinger

pour obtenir un formatage, je devrai le faire en tant que "réponse", mais ce n'est toujours que "le dépannage" n'est pas une vraie solution ...
Tetsujin

Il semble qu'un autre utilisateur se soit heurté à un problème similaire, qui n'a pas encore été résolu: apple.stackexchange.com/questions/93567/…
Keyslinger

Automator ne figure pas dans l'onglet Confidentialité et je ne peux donc pas l'activer: /// Des idées?
davidhq

Réponses:


3

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 appappel 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.


1

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 ...)


1

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.appau 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.


Quelle version d'OS X / macOS utilisez-vous?
user3439894

C'est macOS 10.13.6.
hepcat72

0

Pas une réponse, mais ...
Pour tenter de déboguer, je déconstruirais le script en ses composants, donc divisé en gros en

tell application "System Preferences"
activate
set current pane to pane "com.apple.preference.trackpad"
end tell

& test pour toute erreur

Puis ajouter

tell application "System Events"
    tell process "System Preferences"
         click radio button "Scroll & Zoom" of tab group 1 of window "Trackpad"
    end tell
end tell

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.


Merci beaucoup pour votre contribution continue! Le premier tellbloc 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é.
Keyslinger
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.