Inforordinateurmatique

Aide aux divers cours ou à votre activité - Bruno GADRAT

Petits bouts d'AppleScript

Pour laisser plus de temps au paysage et moins à l'informatique

Le bon langage, La bonne personne

Ici plus qu'ailleurs c'est indispensable

Le principe de base de l'utilisation d'AppleScript: s'adresser aux diverses applications de votre Mac et de leur demander de faire quelque chose de spécial qui contribue à l'ensemble de ce que vous voulez faire.

La principale difficulté est de le demander au bon logiciel. Quand on appelle le finder ou Photoshop ou iTune il faut lui demander ce qu'il sait faire avec les mots qu'il comprend sinon vous aurez droit à un petit message d'erreur et beaucoup de frustration. Cette difficulté est accrue par le fait que certains mots font partie du langage, donc commun à tous les scripts et d'autres font partie du langage de l'application.
Par exemple "display dialog" fait partie du langage de l'application

Essayez le code dans l'éditeur d'AppleScript

Display dialog fonctionne dans l'application de base du Mac (Sandard Additions)
display dialog ("bonjour")
Cela fonctionne aussi dans le Finder
tell application "Finder" to display dialog ("bonjour")
mais pas dans le sous programme du Mac qui traite les images (Image Events).
tell application "Image Events" to display dialog ("bonjour")

Quand on traite des images, ce n'est pas le temps de bavarder.

La deuxième grande difficulté est de le dire correctement. En particulier quand on fait référence à des fichiers.
Par exemple
set pourlacorbeille to (path to desktop folder as string) & "ajeter.txt"
place le chemin du fichier ajeter.txt dans la variable pourlacorbeille sous forme de chaîne de caractères. C'est efficace pour affichier le nom du chemin
set pourlacorbeille to (path to desktop folder as string) & "ajeter.txt"
display dialog pourlacorbeille

ou pour déplacer le fichier ajeter.txt qui est sur le bureau vers la poubelle,
set pourlacorbeille to (path to desktop folder as string) & "ajeter.txt"
tell application "Finder" to move pourlacorbeille to trash

mais pas pour ouvrir le fichier ajeter.txt. Pour ouvrir le fichier par le finder, il faut que son chemin soit donné sous forme d'alias (pointeur vers le fichier).
set pourlacorbeille to (path to desktop folder as string) & "ajeter.txt" as alias
tell application "Finder" to open pourlacorbeille

Donc l'essentiel est de faire attention et de ne pas se décourrager.

Pour bien commencer

Savoir où trouver des bons exemples

Cette page est juste faite pour avoir une idée de comment écrire des petites actions à insérer dans vos scripts.

Accès aux scripts déjà dans votre machine par le Finder dans le dossier applications (ou application/utilitaires pour les systèmes 10.6)

Pour commencer à utiliser AppleScript, je vous recommande en premier lieu d'installer l'accès aux scripts dans votre barre des menus.
Applications/AppleScript/Install Script Menu

Le petit menu des scripts Menu Script dans la barre des menus vous donne accès à de nombreux scripts utiles comme par exemple renomer tous les fichiers d'un dossier. Les scritps sont placés dans le dossier Scripts de la bibliothèque générale de l'ordinateur. Vous pourrez y accéder en fouillant dans le dossier Library de votre disque dur ou par
Applications/AppleScript/Example Scripts

Vous pouvez placer les scripts n'importe où, mais il y a des répertoires magiques pour tous les utilisateurs
Ordinateur/disque dur/Library/Script/
Ordinateur/disque dur/Library/Script/Folder Action Scripts/
ou seulement pour vous
Ordinateur/disque dur/Users/moi/Library/Script/
Ordinateur/disque dur/Users/moi/Library/Script/Folder Action Scripts/

Les scripts placés dans le dossier Scripts sont accessibles par le menu Menu Script dans la barre des menus en haut de l'écran.

Les scripts placés dans le dossier Folder Action Scripts peuvent s'activer automatiquement à l'ouverture, la fermeture et l'ajout ou le retrait d'éléments d'un dossier. Il faudra rendre le dossier actif en faisant un clic droit dessus et en lui affectant l'action de dossier désirée. Par exemple faire tourner l'image sur la droite.

Une autre façon d'utiliser les scripts est de les enregistrer comme application. Cette application est nommée droplet quand elle agit avec les fichiers qu'on lui dépose dessus.

Maintenant que le menu Menu Script dans la barre des menus est activé, lancez l'éditeur de script
Menu Script dans la barre des menus /Basics/Open Script Editor . Vous pouvez copier dedans tous les bouts de code de cette page et les essayer.
display dialog ("bonjour")

Passez voir les références pour en savoir plus sur l'utilisation d'appleScript et de l'éditeur de scripts.

N'oubliez pas les notions élémentaires de la programmation. Au minimum vous devez savoir ce que c'est qu'une variable, un type de variable, une boucle, un test conditionnel, une fonction.

Voici une boucle avec condition de sortie

set laChaine to "une chaîne à couper.texte"
repeat with compteur from 1 to (count laChaine)

end repeat
display dialog chaineCoupee

Voici une fonction (routine)

set fichierchoisi to choose file
display dialog typeDeFichier(fichierchoisi)
-- la fonction
on typeDeFichier(fichierchoisi)

end typeDeFichier

Quelques bouts de script utiles

On trouve de tout sur le net mais quel plaisir de le faire soi-même

La très grande diversité des logiciels disponibles couvre pratiquement tous nos besoins mais quelques petits ajouts peuvent nous faciliter la vie.

 

OuvreAvecKompozer

Droplet pour ouvrir un fichier html avec Kompozer

Vous avez remarqué que certains logiciels comme Kompozer (éditeur wysiwig de pages web gratuit (dont le développement à été arrêté en 2005)) n'ouvrent pas les fichiers qu'on dépose dessus. Vous voulez peut-être simplement ouvrir plus rapidement vos fichiers avec un autre logiciel. Par exemple, on voudra ouvrir un fichier html avec un éditeur de texte comme SubEthaEdit pour structurer le squelette de la page, on voudra l'ouvrir avec un éditeur wysiwig qui garde le code propre comme Komposer pour écrire son contenu et on voudra l'ouvrir avec un navigateur pour voir son aspect.
Ce petit bout de script est une droplet. Une application qui se déclanche quand on lui dépose dessus des fichiers. Justement ceux que l'on veut ouvrir.

Pour faire la droplet:
Copier ce code dans l'éditeur de script, enregistrez le comme application. Glissez les fichiers html sur votre nouveau logiciel OuvreAvecKompozer.

on open (lesFichiers) -- En déposant les fichiers sur la droplet

end open

Vous pouvez aussi utiliser cette version de OuvreAvecKompozer que l'on peut aussi lancer en cliquant dessus

Certains logiciels sont récalcitrant. Si vous remplacez Komposer par Adobe Photoshop CS il vous dira qu'il ne comprend pas open. En revanche Adobe Photoshop CS2 ne posera pas de problème. Si vous avez Adobe Photoshop CS et n'avez pas envie de changer de version, vous pouvez ouvrir les fichiers en remplaçant Kompozer par Adobe ImageReady CS. Le passage des images de ImageReady à photoshop est alors très simple.

 

EditDroplet

Pour mettre au point vos droplet

Vous avez enregistré votre script comme application et maintenant il se lance à chaque fois que vous cliquez dessus. Dans votre dossier de développement des droplets vous aimerez certainement en avoir une droplet qui ouvre les autres droplets.

Voir plus haut comment faire une droplet.

on open (lesFichiers)

end open

 

SurMonDossier

Donne le nom du dossier et des fichiers ajoutés

Les actions de dossier sont certainement la chose la plus pratique pour traiter un lot de fichiers juste en les posant dans un dossier.

Pour faire une action de dossier:
Copier ce code dans l'éditeur de script, enregistrez le comme script dans le dossier Library/Scripts/Folder Action Scripts. Clic droit sur le dossier qui doit réagir. Activez les actions de dossier et joindre cette action de dossier. Le dossier est prêt à recevoir vos fichiers.

on adding folder items to ceDossier after receiving itemsajoutes

end adding folder items to

Vous pouvez aussi utiliser cette version

-- fonction de réaction du dossier
on adding folder items to ceDossier after receiving itemsajoutes

end adding folder items to
-- fonction qui traite ce qui est recu
on traiteLesElements(ceDossier, itemsajoutes)
end traiteLesElements

 

SurMaDroplet

Donne le nom de la droplet et des fichiers ajoutés

Parfois on préfère que le logiciel soit indépendant du dossier mais on veut quand même utiliser le nom de ce sur quoi c'est déposé. Ce nom peut par exemple être le nom du projet dans lequel on veut ranger les fichiers ou bien le format ou la taille maximale des images que l'on veut réduire.

--fonction de droplet
on open (itemsajoutes)

end open
--fonction qui donne le nom de la droplet
on nomduscript()
end nomduscript
--fonction qui traite ce qui est recu
on traiteLesElements(ceDossier, itemsajoutes)
end traiteLesElements

 

ChoisirLesElementsEtLancerLeScript

Pour lancer le script par le menu script ou par l'éditeur de script

Parfois on veut juste que les choses se fassent quand on lance le script. Ce script affiche le dossier et les fichiers sélectionnées. Sélectionnez les éléments dans le Finder et lancer le script. Comme il n'y a pas d'action de déposer sur un dossier ou sur une application, ce script cous demandera de choisir le dossier dans une fenètre de sélection.

Pour lancer par le menu Scripts:
Copier ce code dans l'éditeur de script,
enregistrez le comme script dans le dossier Library/Scripts/

-- au lancement
on run

end run
-- fonction qui traite ce qui est recu
on traiteLesElements(ceDossier, itemsajoutes)
end traiteLesElements

Parfois on veut pouvoir utiliser le script en le lançant par le menu script, en l'utilisant comme action de dossier et en l'utilisant comme droplet c'est possible. Regardez le code de onRunOnOpenOnAddingFolder

 

chercheDansLeDictionnaire

Des listes de listes comme tableau

Chaque application pilotable par Applescript possède un dictionnaire de mots autorisés que l'on peut découvrir par le menu Fichier/Ouvrir un dictionnaire mais il ne s'agit pas de cela. On va juste parler d'une table d'équivalences.

Dans AppleScript une liste est une suite d'éléments séparés par des virgules et mis entre deux accolades. Les éléments peuvent être eux-même des listes. Ce petit dictionnaire est une liste de listes contenant chacune un élément simple et une liste contenant un nombre variable d'équivalences à cet élément simple.

Essayez dans l'éditeur de Scripts:
Copier ce code dans l'éditeur de script,
essayez-le en changeant des éléments

set ceci to "February" -- vous pouvez essayer en vous souvenant que 2 et "2" ce n'est pas pareil
set cela to chercheDansLeDictionnaire(ceci) -- trouve la correspondance
set affiche to "" -- pour séparer les différentes réponses du résultat
repeat with i in cela

end repeat
display dialog "Il y a " & (count of cela) & " éléments correspondant à " & ceci & return & return & affiche -- le dictionnaire
on chercheDansLeDictionnaire(ceci)
end chercheDansLeDictionnaire

 

RangeLesFichier

Exemple avec le nom de l'extension

Un petit exemple très simple pour ranger les fichiers selon leur extension (ce qu'il y a après le point à la fin du nom du fichier).

tell application "Finder" -- travail à faire par le Finder

end tell

 

Exploration des dossiers et sous dossiers pour en traiter les éléments

Pour aller au fond des choses

ExploreFichiersDossiersSousDossiers Droplet pour traiter les dossiers avec tout leur contenu d'un simple glisser déposer.

-- Applescript - Petits bouts de programmes utiles par B.Gadrat - 22 déc 2009
-- Permet d'accéder aux dossier et sous-dossier déposés sur cette droplet

-- Le script doit être enregistré comme application pour fonctionner comme droplet


-- Traitement des fichiers déposé sur cette Droplet. Développer cette fonction selon vos besoins
on traiteFichier(lElement)

end traiteFichier

-- Traitement des dossiers
on traiteDossier(lElement)
end traiteDossier

-- fonction de déclanchement de la droplet
on open (LesElementsDeposes)
end open

-- fonction au lancement si on doubleclic sur la droplet ou si on l'éxécute par le menu script ou l'éditeur de script
on run
end run

-- Separe les dossiers des fichiers
on separeDossiersFichiers(LesElementsASeparer)
end separeDossiersFichiers

-- Fais la liste des éléments du dossier -- Garder intact pour l'exploration des sous-dossiers
on faisLalisteDesElements(CheminDossierChaine)
end faisLalisteDesElements

 

Rangement-projet

Vous aussi vous avez plein de photos pas rangées ?

Vous aimez faire des photos mais vous n'avez pas le temps de bien les nommer par projet et par date, ce qui facilite le rangement et l'utilisation.

Je sais iphoto et d'autres logiciels font ça, mais vous n'aimez pas leur rangement obscur et vous n'avez pas le temps de vous en occuper. Juste le temps de brancher l'appareil photo qui ouvre transfert d'images et de lui dire le dossier portant le nom du projet dans lequel il doit les placer. Pour le reste, l'ordinateur peut bien s'en charger

Rangement-projet utilise le nom du dossier et d'autres informations sur le fichier pour renommer les fichiers et les ranger dans un sous-dossier dont le nom peut dépendre du projet (dossier englobant) ou du fichier. Regardez le code de rangement-projet pour l'adapter à vos besoins et ranger les choses à votre façon.

 

AppleScript2HTML-V2

Transformer un AppleScript en HTML

L'éditeur de script d'Apple permet d'enregistrer des fichiers en format texte avec l'extension .applescript. Mais pour les présenter sur le web une mise en couleurs s'impose. À la main c'est un peut long. AppleScript2HTML-V2 permet de faire cette transformation rien qu'en glissant le script sur la droplet et place le fichier html résultant sur le bureau avec le même nom que le script. Soyez un peu patient. Ne jouez pas avec l'éditeur de script pendant la transformation.

 

Quelques références

pub

Orig: 2009/12 Rev: 2009/12/23

AppleScript.html

Design et gestion du site B.Gadrat

Contrôle qualité