septembre 26th, 2009AppleScript : impression automatique
La dernière fois, nous avons vu un script permettant de sauvegarder les pièces jointes à un email directement dans un dossier. Ce que je ne vous ai pas dit c’est que ce dossier est magique car chaque fois que l’on déplace un document dans celui-ci, il imprime automatiquement le document déplacé ! Et nous allons voir comment ! Sur Mac Os X, vous pouvez définir une action pour chaque dossier, il suffit de cliquer sur le bouton droit du Dossier et choisir « Configuration des actions de dossier… ». Dans cette option vous avez la possibilité de choisir un script à exécuter lorsqu’un fichier est déplacé dans ce dossier. Le système propose plusieurs exemples de Script concernant les images par exemple. Ces scripts se trouvent dans votre bibliothèque, dossier Script et Folder Actions Scripts. C’est ici que nous allons créer notre script d’impression :
on adding folder items to this_folder after receiving added_items
try
tell application « ScreenSaverEngine » to quit
delay 2
repeat with i from 1 to number of items in added_items
set this_item to item i of added_items
tell application « Preview »
activate
open this_item
tell application « System Events »
tell process « Preview »
set frontmost to true
keystroke « p » using command down
delay 2
key code 36
delay 2
end tell
end tell
delay 2
quit
end tell
end repeat
end try
end adding folder items to
Voici donc le script que je vais décrypter pour vous maintenant. La première ligne indique simplement l’action à effectuer lorsque l’on rajoute des fichiers dans ce dossier et ceci après avoir reçu complètement les dits fichiers. La commande try permet de gérer les éventuelles erreur qui pourrait se produire (toutefois nous ne gérons aucune erreur dans ce script). Ensuite nous disons à l’application Ecran de veille de Quitter. En effet si l’écran de veille est toujours actif certains programment sont bloqués, nous sommes donc obligé de quitter la veille pour effectuer nos manoeuvres.
La commande delay n que vous trouverez souvent permet simplement d’attendre n secondes. Nous prenons ensuite chaque item de la liste added_items, ce repeat n’est pas le plus élégant comme nous l’avons vu la dernière fois. Nous allons utiliser l’application Preview (Aperçu) pour imprimer notre document. Toutefois cette application n’est pas vraiment prévu pour marcher avec AppleScript, cela ne fait rien, nous allons la piloter manuellement. On active donc preview et on ouvre le document courant de la liste. Une fois fait, nous appelons l’application System Events qui n’est pas véritablement une application mais une tâche chargé de gérer les évènements systèmes comme le clavier, la souris, etc…
A travers cette application nous allons parler au process « Preview ». A ce propos, je voudrais vous parler de la commande tell. Cette commande est juste un raccourci évitant d’écrire ceci par exemple
activate of application « Preview »
open this_item of application « Preview »
Nous sommes dans cet exemple obligé d’écrire of application « Preview » à chaque ligne pour indiquer à qui s’adresse la commande. L’instruction tell permet d’éviter cela en indiquant que le bloc suivant est pour « Preview ».
Pour finir, nous passons « Preview » au premier plan, lui envoyons la combinaison de touche « command » + « p » ce qui permet d’ouvrir la fenêtre d’impression et ensuite key code 36 simule simplement l’appui de la touche ENTREE ce qui déclenche l’impression.
Comme vous le voyez ce script n’est pas le plus simple (on pourrait imprimer depuis le Finder par exemple) mais permet de voir les possibilités d’AppleScript qui sont extrêmement nombreuses et qui j’espère vous inspirerons.

11 janvier , 2010 à 12 h 40 min
Bonjour Manu,
J’ai un peu de mal avec les applescripts, j’ai essayé d’adapter votre script pour faire ceci: je souhaiterais imprimer des mails de manièr automatique (via une règle), comment faire ? je ne trouve aucun script, par exemple si l’objet du mail est « A imprimer ». merci et félicitation pour votre blog, ont apprend plein de chose utile !