web-dev-qa-db-fra.com

Comment dire à un AppleScript d'interrompre son exécution

L'interaction utilisateur "Choisir dans la liste" d'Applescript comporte un bouton "annuler" - je souhaite que cette "annulation" indique au script d'arrêter immédiatement l'exécution. En d'autres termes:

 set wmColor to choose from list {"Black", "Black for all", "White", 
     "White for all"} with Prompt "What color should the watermark be?" 
     default items "White for all" without multiple selections allowed and 
     empty selection allowed
 if wmColor is false
     *tell script to stop executing*
 end if

Je n'arrive pas à trouver comment faire cela - est-ce que quelqu'un sait comment?

16
jefflovejapan

Le numéro d'erreur -128 est "Utilisateur annulé" et arrêtera le script - par exemple:

if wmColor is false then
    error number -128
end if
27
user866649

"return" indique à un script d'arrêter l'exécution:

display dialog "Do you want to exit this script?" with icon note buttons {"Exit", "Continue"}
if the button returned of the result is "Exit" then
  return
end if
10
Karl

Dans le cas spécifique d'un AppleScript appelé via osascript, il peut être résilié en renvoyant le statut 0 au shell, en procédant comme suit:

tell me to "exit"

Résilier, émettre un message et renvoyer l'état 1, en effectuant:

tell me to error "{your message}"

Ce qui précède écrit une ligne comme celle-ci dans l'erreur standard:

{scriptname}: execution error: {your message} (-2700)

Voici un exemple qui remplace le cryptique "-2700" et fait probablement ce que jefflovejapan recherche:

tell me to error "Terminated by user" number 0

qui écrit ceci en erreur standard:

{scriptname}: execution error: Terminated by user (0)

et retourne un statut de 1.

J'ai appris cela par expérience, après avoir lu: Guide du langage AppleScript - Instructions d'erreur

1
G H

J'ai trouvé que cela fonctionnait bien pour les scripts exécutés dans une application (par exemple, InDesign CS5.5):

repeat 100 times
    tell application ("System Events") to keystroke "." using command down
    delay (random number from 0.5 to 5)
end repeat

Ceci a été modifié à partir de cette réponse .

1
spyle

Vous pouvez utiliser le mot "quitter" pour quitter l'application actuelle. Vous pouvez l'utiliser si vous enregistrez votre script en tant qu'application.

if wmColor is false
    quit
end if
0
Elijah