2009-09-07 10 views
2

J'essaye de créer un service dans OSX léopard qui compte le nombre de mots du texte sélectionné. J'ai Automator configuré pour exécuter un AppleScript, avec ce qui suit mis en elle:AppleScript Word Count Service

on run {input, parameters} 
     count words of input 
     display alert "Words: " & input 
     return input 
end run 

Quand je compile le script, il dit qu'il ne peut pas compter chaque mot. Qu'est-ce que je fais mal?

Merci pour l'aide,

Elliott

Répondre

3

Tout d'abord, je suppose que vous testez cela dans Automator, et c'est où l'erreur a lieu? Si c'est le cas, le problème probable est qu'il n'y a pas d'entrée - donc il ne peut pas compter les mots de rien. Afin de le tester avec succès, vous devez ajouter temporairement une action "Get Specified Text" avant l'action Run AppleScript, et entrer du texte de test dans ce champ. Vous devrez supprimer l'action Obtenir le texte spécifié avant de l'utiliser en tant que service réel.

Deuxièmement, vous devez utiliser

count words of (input as string) 

afin d'obtenir un bon nombre, sinon il retournera à zéro.

+0

Merci pour la réponse - J'ai eu la question de ne pas utiliser une chaîne, alors merci pour éclaircir cela. –

3

J'ai fait un ici, sur Github:

https://gist.github.com/1616556

La source de courant est:

on run {input, parameters} 
    tell application "System Events" 
     set _appname to name of first process whose frontmost is true 
    end tell 
    set word_count to count words of (input as string) 
    set character_count to count characters of (input as string) 
    tell application _appname 
     display alert "" & word_count & " words, " & character_count & " characters" 
    end tell 
    return input 
end run 

Utilisez Automator.app pour créer un nouveau service, puis sélectionnez l'action Exécuter AppleScript . Collez ce code dans la zone de texte et enregistrez en tant que nombre de mots et de caractères. Maintenant, passez à une nouvelle application, sélectionnez du texte et ouvrez le menu contextuel pour trouver la nouvelle option.