Exécutez applescript sans ouvrir l'éditeur

12

Chaque fois que je veux exécuter un script Apple, l'éditeur apparaît.

Existe-t-il un moyen de l'exécuter directement?

OscarRyz
la source

Réponses:

19

La façon dont le script est enregistré a un grand effet sur son fonctionnement sous Mac OS X. Il semble que votre script soit simplement enregistré en tant que script et c'est ce qui fait que l'éditeur de script s'ouvre à chaque fois que vous ouvrez le script.

Pour résoudre le problème, ouvrez le script dans l'éditeur AppleScript et enregistrez-le en tant qu'application. Cela devrait faire l'affaire.

Les étapes sont (dans l'éditeur)

Fichier> Enregistrer sous> puis définissez Format de fichier sur l'application, puis enregistrez.

texte du lien

Bruce McLeod
la source
Maintenant, il demande: "Appuyez sur exécuter pour exécuter ou quitter pour quitter" ... mais je suppose que c'est la faute de script! Merci
OscarRyz
1
Si vous cochez la case Exécuter, il se peut que l'invite n'apparaisse pas.
Bruce McLeod
Ma compréhension est que la case à cocher Exécuter uniquement ne permet pas de modifier le script ultérieurement.
jtbandes
@jtbandes ahhhh ... c'est logique
Bruce McLeod
2
Veuillez noter que dans Yosemite, la méthode actuelle consiste à utiliser Fichier -> Exporter. Il n'y a plus de dialogue Enregistrer sous dans la dernière version de l'éditeur AppleScript.
anon58192932
7

Lors de l'enregistrement du script, vous pouvez choisir "Application" dans la liste déroulante Format de fichier; vous pourrez ensuite l'exécuter et vous pourrez toujours le faire glisser vers l'éditeur de script pour ouvrir le script; ou vous pouvez choisir Exécuter uniquement pour ne pas enregistrer la version modifiable.

Vous pouvez également utiliser la osascriptcommande dans Terminal, sous la forme osascript /path/to/scriptou ou osascript -e "a short script here".

jtbandes
la source
1

Vous pouvez également placer le script dans votre dossier ~ / Library / Scripts / Finder / et l'exécuter directement à partir du menu Script.


la source
1

Sous macOS High Sierra 10.13, il n'y a pas de fichier / enregistrer sous.

Vous devez utiliser Fichier / Exporter / Format de fichier: Application Exportation de fichiers Format de fichier

Jay Walker
la source
0

Une autre façon consiste à créer un service dans Automator qui utilise la osascriptcommande pour exécuter un .scpt dans le Finder.

(Je n'utilise pas Automator en anglais, donc la formulation peut ne pas être exacte)

  1. Lancer Automator
  2. Fichier> Nouveau et sélectionnez Service
  3. Dans "Service accepte:" sélectionnez "Fichier ou dossier"
  4. Dans "Emplacement:" sélectionnez "Finder.app"
  5. Recherchez «Exécuter AppleScript» et faites glisser l'élément vers la droite
  6. Dans la zone Exécuter AppleScript, entrez le code suivant:

    on run {input, parameters}
        tell application "Finder"
            --get the selected file
            set selectedItem to (item 1 of (get selection))
    
            --get location info (folder:file format)
            set fileLocation to (selectedItem as alias) as string
    
            --replace : with / with subroutine
            set the semifinal to my replace_chars(fileLocation, ":", "/")
    
            --remove Macintosh HD with subroutine
            set the theFinal to my replace_chars(semifinal, "Macintosh HD", "")
        end tell
        do shell script "osascript " & "\"" & theFinal & "\""
        return input
    end run
    
    on replace_chars(this_text, search_string, replacement_string)
        set AppleScript's text item delimiters to the search_string
        set the item_list to every text item of this_text
        set AppleScript's text item delimiters to the replacement_string
        set this_text to the item_list as string
        set AppleScript's text item delimiters to ""
        return this_text
    end replace_chars
    
  7. Fichier> Enregistrer, et donnez-lui un nom comme "Exécuter AppleScript"

  8. Vous pouvez maintenant cliquer avec le bouton droit sur un fichier .scpt dans le Finder et sélectionner "Exécuter AppleScript" et voir votre script exécuté.

Référence: source du sous-programme - AppleScript: sous-routines essentielles

Jack Wu
la source
Je vois des problèmes avec votre code AppleScript. 1. Vous n'avez aucune gestion d'erreur ou code pour valider ce qui est sélectionné est un fichier .scpt avant qu'il ne soit transmis à osascriptet ne l'avez pas codé pour le gérer si plus d'un fichier .scpt est sélectionné dans le Finder. 2. Il n'est absolument pas nécessaire de passer par un tel rigmarole de codage lorsque la seule ligne de code suivante remplace tout ce que vous avez ajouté à l'action Exécuter AppleScript. do shell script "osascript " & quoted form of POSIX path of item 1 of inputVoici un exemple minimal pour tout remplacer dans votre code AppleScript actuel: paste.ee/p/XngKA
user3439894
Dans l'exemple minimal, le ifbloc d'instructions peut être développé avec une elseclause qui affiche un message indiquant que le fichier sélectionné n'est pas un fichier .scpt. De cette façon, l'utilisateur ne se demande pas pourquoi rien ne s'est produit s'il ne voit pas qu'il a accidentellement sélectionné le mauvais type de fichier lors de l'exécution du service.
user3439894