14 votes

Comment déboguer un flux de travail Automator ?

J'ai une action automator très simple consistant en un shell script qui doit être exécuté dans un dossier sélectionné dans le finder. Lorsque j'exécute l'action, j'obtiens le message :

L'action "Run Shell script" a rencontré une erreur.

C'est évidemment trop générique. Existe-t-il un moyen simple de voir un message d'erreur plus précis qui me donne une idée de la nature du problème ?

9voto

Ged Byrne Points 481

Activer le journal de l'Automator

Le panneau "Log" d'Automator devrait afficher des informations plus détaillées sur les erreurs. Vous pouvez les afficher en cliquant sur le bouton Journal de bord dans le Voir (ou en appuyant sur L).

Log Panel

8 votes

Mais je n'exécute pas l'action dans l'éditeur Automator avec le bouton "Exécuter", mais directement dans le Finder. Il n'y a aucun moyen de voir l'erreur si l'action est exécutée dans le Finder ?, sinon comment puis-je l'exécuter dans l'éditeur Automator si l'action prend en paramètre un dossier sélectionné ?

2 votes

Oui, vous pouvez l'exécuter dans l'éditeur Automator et l'action "Éléments sélectionnés du Finder" utilise simplement ce qui est sélectionné dans la fenêtre du Finder la plus en avant, même s'il ne s'agit pas de la fenêtre active.

0 votes

A 2016-01-07 sur MacOSX 10.10 l'utilisation de cette méthode pour tester les scripts qui s'appuient sur les "éléments de dossier sélectionnés" ne fonctionne pas sur mon appareil.

6voto

Vlad Points 161

Si vous avez besoin de déboguer le flux de travail en dehors d'Automator.app, alors syslog peut être utilisée.

Dis que tu as fait Action rapide flux de travail avec Exécuter le Shell script action comme ci-dessous :

for f in "$@"
do
    syslog -s -l i "Touching file: $f"
    touch "$f"
done

"Quick Action" workflow

Vous pouvez maintenant utiliser Action rapide dans le Finder :

Running "Quick Action"

Sortie de syslog peut être visualisée dans Console.app :

Output of Syslog command

Une autre façon d'afficher la sortie de syslog est d'utiliser log dans Terminal.app.

log stream --info --debug --predicate 'process == "syslog"'

log command in Terminal.app


Mise à jour

Nous pouvons améliorer Action rapide montré ci-dessus en envoyant une notification locale en cas de réussite :

for f in "$@"
do
    syslog -s -l i "Touching file: $f"
    touch "$f" || exit 1 # Early exit on failure.
    osascript -e "display notification \"Touched file: $f \" with title \"Automation\""
done

Local notification

1 votes

La notification ajoute une touche vraiment agréable ! merci.

1voto

Ixmatus Points 591

Si vous êtes prêt à utiliser JavaScript via l'option Run JavaScript Au lieu d'utiliser des scripts shell, vous disposez de fonctions de débogage très pratiques, auxquelles les développeurs web sont habitués de nos jours, à savoir le panneau d'inspection du navigateur web (dans ce cas, celui de Safari). Guide de configuration disponible dans les documents d'Apple sur déboguer Automator JS .

L'installation est simple et, à la date de ce commentaire, il est vérifié qu'il fonctionne sur Big Sur.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X