Comment Remplacer un fichier par un autre avec AppleScript ?

SEScriptEditorX

Vous souhaitez remplacer un fichier par un autre, pas de problème, AppleScript saura effectuer cette opération, il existe deux approches :

Dans notre exemple, le script copie le fichier « images.jpg » depuis le dossier « Documents » vers le dossier « mes_images » en remplaçant le fichier s’il existe.

La première solution consiste à utiliser la commande « duplicate » comme ceci :

tell application "Finder" duplicate POSIX file "/Users/dom/Documents/image.jpg" to POSIX file "/Users/dom/Documents/mes_images/" with replacing end tell

Image 01

(le script dans l’éditeur de script, notation Unix)

Une autre approche assez similaire, cette fois avec la commande « move » :

tell application "Finder" move POSIX file "/Users/dom/Documents/image.jpg" to POSIX file "/Users/dom/Documents/mes-images/" with replacing end tell

Notez que dans les deux précédentes propositions nous avons utilisé la notation Unix en indiquant un chemin de type Unix avec la commande « posix » :

Vous pouvez aussi indiquer le chemin à la mode « Apple/finder » :  dans ce cas les barres latérales sont remplacées par des « : » comme ceci :

move file "Macintosh HD:Users:dom:Documents:image.jpg" to "Macintosh HD:Users:dom:Documents:mes_images” with replacing

Cette fois avec le commande « duplicate « :

duplicate file "Macintosh HD:Users:dom:Documents:image.jpg" to "Macintosh HD:Users:dom:Documents:mes_images”" with replacing

Image 02(le script dans l’éditeur de script d’Applescript)

S’il y a peu de différences entres les deux notations de chemin (Path en Anglais) je lui préfère la version Unix, elle permet iser des notamment alias ou des raccourcis vers le dossier de l’utilisateur.

Henri Dominique Rapin

Comment passer des données depuis le Terminal vers un script AppleScript ?

SEScriptEditorX

Lancer un script Applescript depuis le Terminal nécessite l’utilisation de la commande « osascript » suivi du chemin vers le fichier Applescript comme ceci :
(Ligne de commande à placer dans le terminal)

$ osascript ~/Desktop/mon_script.scpt 

(Le Script mon_Script.scpt est placé sur le bureau)

Maintenant nous souhaitons envoyer à mon script le contenu d’une variable.

La première étape consiste à créer cette variable unix comme ceci. La variable « var » contiendra le texte entre guillemets :

$ var=$(echo "Mon nom est Mac")

La transmission de la variable se fait toujours en plaçant la variable entre guillemet (pour le texte) et en plaçant un  symbole « $  » avant le nom de la variable comme ceci :

$ osascript ~/Desktop/mon-script.scpt "$var"

Les deux commandes peuvent être associées dans une seule commande en les séparant par un point virgule « ; » pour former la commande suivant :

$ var=$(echo "Mon nom est Mac"); osascript ~/Desktop/mon-script.scpt "$var"

La seconde partie consiste à créer le script AppleScript et de collecter le contenu de la variable qui est passée, la structure du script est la suivante :

on run argv repeat with i from 1 to count of argv tell application "Finder" activate display dialog (item i of argv) end tellend repeat end run

Image 01

Il s’explique ainsi. L’exécution du script s’appuie sur des arguments (on run argv).La ligne suivante boucle sur le nombre d’arguments fournis.  

Ensuite, le code entre les commandes « tell » et « end tell » est exécuté avec chaque argument.

Dans l’exemple présenté le Finder affiche le texte passé en argument, celui stocké dans la variable argv.

Vous pouvez utiliser cette astuce pour réaliser des opérations sur les fichiers AppleScript tout en plaçant la commande dans un script Shell.

Henri Dominique Rapin

Comment limiter l’étendue d’une requête ?

 

SPOTLIGHTPREFICONS 128X128

Comment limiter le champ d’une requête ?

Le premier réflexe d’un Unixien serait d’utiliser cette lignde de commande :

$ mdfind mon_texte | grep Mon_Dossier

Le résultat de Spotlight est envoyé vers la commande « grep » qui filtre le contenu aux fichiers placés dans « Mon_Dossier ».

Mais il est possible de faire plus simple :

$ mdfind -onlyin ~/Mon_Dossier « Le texte de la recherche"

l’option  » -onlyin  » limite l’étendue de  la  recherche au contenu du dossier indiqué. Voici un exemple, vous cherchez uniquement sur le bureau (Desktop en Anglais) les fichiers contenants « Capture » :

$ mdfind -onlyin ~/Desktop "Capture"

 
Hdrapin bash 80×24
(résultat de la commande)
 
C’est en particulier intéressant lorsque vous effectuez un recherche dans Automator ou AppleScript, cela permet de limiter le champ de la recherche.
 
 
Henri Dominique Rapin

 

Comment piloter les tableaux de préférences avec AppleScript ?

SEScriptEditorX

 

Il peut être utile dans un script d’afficher automatiquement un tableau de préférences. Vous pourriez envoyer à un ami, collègue un petit script capable d’afficher un panneau de préférences afin de le guider, ou plus directement créer un raccourcis clavier vers un de ces panneaux. 

 

Attention nous ne parlons pas de modifier une préférence mais de l’afficher. Cette fonction n’est pas documentée. Il existe pourtant une astuce qui autorise cette opération.

 

Les lignes de script à utiliser sont les suivantes  :

tell application "System Preferences" activate reveal pane "com.apple.preferences.users" end tell

 

Le script est simple, La première et dernière ligne définissent un bloc « tell », il s’agit de l’application cible, ici « System Preferences ». La seconde ligne « Activate » fait passer cette application au premier plan devant tous les programmes ouverts. Enfin « reveal pane » affiche le tableau de préférence désigné entre guillemets. 

 

 

Capture d écran 2012 12 29 à 18 08 29

 

 

Le nom du panneau est présenté en notation Java ou domaine inversé. Pour les produits apple il s’agit toujours du préfixe « com.apple.preference » puis du nom en Anglais du tableau, voici une liste partielle  : 

 

Préférences Système  : com.apple.preference.general

Clavier  : com.apple.preference.keyboard

Sécurité  : com.apple.preference.security

Son  :  com.apple.preference.sound 

Réseau  :  com.apple.preference.network

Imprimante et Fax  : com.apple.preference.printfax

Parole  : com.apple.preference.speech

Date et heure  : com.apple.preference.datetime

 

Les panneaux de préférences livrés avec Mac OS X se trouvent dans le dossier  : «  System/Library/PreferencePanes « .

(Attentions aux « s » parfois à la fin du mot « préférence » ou à la fin du nom du tableau comme pour « Displays »).

 

Si vous souhaitez lancer des panneaux d’autres applications, le plus simple est de récupérer le nom des fichiers de préférences ou Plist, ceux-ci correspondent en général au nom du tableau.

 

Pour être plus précis, vous pouvez demander à afficher un onglet, là la quête d’information est encore plus difficile, car il faut trouver le nom de l’onglet en Anglais, Apple n’ayant pas standardisé le nomination… il faut explorer les « packets «  de chaque panneau.

 

Voici comment afficher l’onglet « Couleur » du panneau « Moniteurs »  :

 

tell application « System Preferences »

   activate

   reveal anchor « displaysColorTab » of pane id « com.apple.preference.displays »

end tell

 

Nous avons ajouté le nom de l’onglet après « anchor » et le mot « of » pour « de ». Remplacez « displaysColorTab » par « displaysDisplayTab » pour afficher l’onglet des résolutions.

 

Quelques exemples à placer dans le script :

 

– Le panneau de préférences de l’économiseur d’écran  : 

reveal anchor « DesktopPref » of pane id « com.apple.preference.desktopscreeneffect »

 

– Le panneau de préférences de Clavier et l’onglet « raccourcis clavier »

reveal anchor « shortcutsTab » of pane id « com.apple.preference.keyboard »

 

Henri Dominique Rapin 

Comprendre et gérer les empreintes numériques

SEScriptEditorX

Beaucoup d’éditeurs de logiciels utilisent les signatures numériques pour garantir l’intégrité de leurs fichiers, par exemple Apple met à disposition sur ces pages de téléchargement une suite de caractères appelé « digest » ou « fingerprint » qui est une signature numérique du fichier proposé en téléchargement.

Une fois le fichier sur votre Mac, vous pouvez vérifier qu’il est bien celui créé par Apple et non un « faux » avec peut être un virus ou un logiciel espion dedans, le fonctionnement est simple : générez sur votre Mac la clé numérique en utilisant le fichier téléchargé comme source, si la clé correspond à celle affichée par Apple le fichier est bien celui créé par Apple.

A chaque fichier correspond une clé, deux fichiers différents ne peuvent pas créer la même clé, en théorie ! car les mathématiciens se font un plaisir à démontrer les faiblesses de ces fonctions.

Les empreintes numériques (« fingerprint ») sont obtenues en « passant » un fichier au travers d’une fonction mathématique, ce processus est appelé « hachage cryptographique », on part d’un fichier puis après une somme de calculs on en déduit une clé.

La plus connue de ces fonctions de « hachage » est md5, elle fut créée en 1992, malheureusement en 1996 une faille est « théoriquement » découverte, fin 2004 md5 était définitivement « cracké », cet algorithme n’est plus considéré sûr, mais Il est toujours utilisé pour des raisons de compatibilité.

Md5 est très répandu, une commande est même intégrée dans Mac OS X, saisissez la commande dans le terminal :

$ md5

puis glissez un fichier derrière et pressez « entrer » et vous obtiendrez la clé de 128 bits, pour obtenir de l’aide sur cette commande:

$ man md5

EN 1995 la NSA (« National Security Agenccy » aux USA service très secret.. fort connu pour ses écoutes !!! ) proposa un nouvel algorithme devant rendre plus « sur « la fonction sha-0 dont l’origine date de 1993 et était considérée comme non fiable. Cette nouvelle fonction porte le nom de sha-1, elle a supplanté progressivement md5 mais elle semble, elle aussi incertaine quant à sa fiabilité, deux français ont découvert en 2004 que cette fonction de hachage contenait des failles, des algorithmes sont apparus tel que sha-256 qui doivent garantir un plus haut niveau de fiabilité.

Contrairement à md5 il n’y a pas de commande, et pour obtenir une clé basée sur la fonction sha-1 vous devez utiliser la commande « openssl » , qui est un ensemble open source cryptographique livré avec Mac OS X.

Pour obtenir une clé sha-1 avec le terminal :

$ openssl sha1 puis le fichier $ openssl sha1 /Users/hdrapin/Desktop/Sanstitre.app SHA1(/Users/hdrapin/Desktop/Sanstitre.app)= e36d3a03369e5c4fe1bfc64c91c4660da654ebc0

Votre clé correspond à la dernière ligne soit :

« e36d3a03369e5c4fe1bfc64c91c4660da654ebc0 »

Travailler avec le terminal n’est pas des plus pratiques, l’utilisation d’Applescript va soulager notre peine… le script suivant vous simplifiera la vie :

Saisissez ces lignes sous l’éditeur de script puis enregistrez en choisissant le format « Application ».

---------- SCRIPT ------- on run display dialog "Oups, vous devez déposer un fichier sur mon icône pour obtenir la clé sha1" end run on open lefichier do shell script "/usr/bin/openssl sha1 " & quoted form of the POSIX path of the lefichier set leDigest to result set leDigest to (the clipboard as string) display dialog leDigest end open __________ FIN SCRIPT -----

Déposez simplement sur l’icône de votre script un fichier et vous obtiendrez son empreinte numérique.

Ce script s’appuie sur le module « openssl », Remplacez directement dans le script « sha1 » par une autre fonction comme « md5 », voici la liste de quelques fonctions disponibles :

• md2 • md5 • mdc2 • rmd160 • sha • sha1

Lorsque vous effectuez des envois de fichiers rien ne vous empêchent d’utiliser les signatures numériques pour garantir à votre correspondant que les fichiers envoyés sont les authentiques.

Par précaution quand une clé numérique est disponible; prenez le temps d’effectuer la vérification, notre système préféré est de plus en plus la cible d’attaque et le meilleur moyen pour propager sur Mac un programme espion reste de modifier une archive (fichiers .zip ou .sit) téléchargée sur Internet.

Henri Dominique Rapin

Comment ouvrir automatiquement Messages lorsqu’un message est arrivé ?

SEScriptEditorX

Lorsque vous recevez un message instantané dans l’application « Messages », une alerte apparait et l’icône de l’application « saute » dans le Dock, ce sont là les réglages par défaut des alertes de l’application.

Si vous « dépendez » de Messages à titre professionnel ou que ce mode de communication est important pour vous, il est regrettable de ne pas pouvoir afficher l’application lorsque qu’un message d’une personne est reçu. Il existe un moyen de contourner cette limitation, pour se faire nous allons utiliser AppleScript.

Copiez dans un script les lignes de code suivantes :

using terms from application "Messages"
on message received
set Mafenetre to the first window whose name starts with "Messages"
set (the visible of Mafenetre) to true
end message received
end using terms from

 

Image 01

Sauvegarder ce script n’importe ou.

Ensuite ouvrez les préférences de Messages, dans l’onglet « Alertes « . Exécuter un script AppleScript ».  Et sélectionnez le script récemment enregistré.

Image 02

 (la fenêtre de sélection d’action lors de la réception d’un message)

Henri Dominique Rapin

AppleScript :: Comment Identifier les panneaux de préférences ?

SEScriptEditorX

Comment Identifier les panneaux de préférences ?

« Préférences systèmes » est une application comme les autres, elle a la particularité d’être scriptable. Elle opère comme un réceptacle à « panneaux de préférences ». Apple modifie l’organisation à chaque sortie de nouvelle version du félin. Il faut donc revoir le nom et le contenu des panneaux de préférences. La première étape consiste à identifier les panneaux.

 Il existe deux approches afin d’identifier les panneaux de préférences disponibles dans Mac OS X. La première consiste à récupérer les noms des panneaux :

tell application "System Preferences"
name of every pane
end tell

Vous récupérerez la liste des panneaux  localisés comme ceci (Mountain Lion):

{« Accessibilité », « Bluetooth », « Bureau et  éco. d’écran », « CD et DVD », « Clavier », « Contrôle parental », « Date et heure », « Démarrage », « Dictée et Parole », « Dock », « Économiseur d’énergie », « Général », « Hazel », « iCloud », « Imprimantes et scanners », « Langue et texte », « Mail, Contacts et Calendrier », « Mise à jour de logiciels », « Mission Control », « Moniteurs », « Notifications », « Partage », « Réseau », « Sécurité et confidentialité », « Son », « Souris », « Spotlight », « Time Machine », « Trackpad », « Utilisateurs et groupes »}

 Remarquez qu’un panneau s’est glissé dans cette liste « Hazel », il s’agit d’un utilitaire très pratique et non livré par Apple.

L’utilisation des noms des panneaux n’est pas forcement une bonne approche en particulier si vous développez des scripts à destination d’utilisateurs non francophones. Il est conseillé d’employer l’ID du panneau de préférences, il s’agit du nom du panneau dans le système :

 Voici le script :

tell application "System Preferences"       id <strong>of</strong> <strong>every</strong> <em>pane</em> <strong>end</strong> <strong>tell</strong>

Le résultat sera le suivant (toujours sur Mountain Lion) :

{« com.apple.preference.universalaccess », « com.apple.preferences.Bluetooth », « com.apple.preference.desktopscreeneffect », « com.apple.preference.digihub.discs », « com.apple.preference.keyboard », « com.apple.preferences.parentalcontrols », « com.apple.preference.datetime », « com.apple.preference.startupdisk », « com.apple.preference.speech », « com.apple.preference.dock », « com.apple.preference.energysaver », « com.apple.preference.general », « com.noodlesoft.Hazel », « com.apple.preferences.icloud », « com.apple.preference.printfax », « com.apple.Localization », « com.apple.preferences.internetaccounts », « com.apple.preferences.softwareupdate », « com.apple.preference.expose », « com.apple.preference.displays », « com.apple.preference.notifications », « com.apple.preferences.sharing », « com.apple.preference.network », « com.apple.preference.security », « com.apple.preference.sound », « com.apple.preference.mouse », « com.apple.preference.spotlight », « com.apple.prefs.backup », « com.apple.preference.trackpad », « com.apple.preferences.users »}

 Là encore panneau d’Hazel est présent avec la notation « java », qui commence par le domaine, le nom de la société et le nom du panneau.

 (fin de la partie 1)

Henri Dominique Rapin

AppleScript :: Comment automatiser le lancement des favoris sous Chrome ?

SEScriptEditorX

Comment automatiser le lancement des favoris sous Chrome ?

Si Google Chrome est devenu votre browser favori, il y a une fonctionnalité qui doit vous manquer par rapport à Safari. Il s’agit de pouvoir lancer un raccourci depuis le clavier en pressant la combinaison de touches « cmd » et le numéro du raccourci : cmd + 1 ce qui avec notre clavier AZERTY donne : cmd + Maj + 1 et ainsi de suite pour les autres raccourcis.

 Vous pouvez reproduire une fonctionnalité relativement proche avec l’aide d’AppleScript, il faut toutefois reproduire ce script autant de fois que vous voulez automatiser de lancement de raccourcis.

tell application "System Events"
      tell process "Google Chrome"
              click menu item "newsmap" of menu "Favoris" of menu bar 1
  end tell
end tell

Image 01

(le script dans l’éditeur du script)

 Dans ma liste de favoris, j’ai un site qui s’appelle « newsmap », il se trouve dans le menu favori (ce menu est lui présent dans la barre des menus 1).

 

Image 02

 (le favoris dans le menu de Chrome)

 

Si vous exécutez ce script en remplaçant « newsmap » par le nom d’un de vos favoris en lançant le script, le favori sera ouvert.

Enregistrez le script sous forme d’application ou comme un service  avec Automator et vous pourrez lui attribuer une combinaison de touches.

Henri Dominique Rapin

AppleScript :: Comment passer des données depuis le Terminal vers un script AppleScript ?

SEScriptEditorXComment passer des données depuis le Terminal vers un script AppleScript ?

 Lancer un script Applescript depuis le Terminal nécessite l’utilisation de la commande « osascript » suivi du chemin vers le fichier Applescript comme ceci :

 (Ligne de commande à placer dans le terminal)

$ osascript ~/Desktop/mon_script.scpt

 (Le Script mon_Script.scpt est placé sur le bureau)

 Maintenant nous souhaitons envoyer à mon script le contenu d’une variable.

 La première étape consiste à créer cette variable unix comme ceci. La variable « var » contiendra le texte entre guillemets :

 $ var=$(echo « Mon nom est Mac »)

La transmission de la variable se fait toujours en plaçant la variable entre guillemet (pour le texte) et en plaçant un  symbole « $  » avant le nom de la variable comme ceci :

$ osascript ~/Desktop/mon-script.scpt "$var"

Les deux commandes peuvent être associées dans une seule commande en les séparant par un point virgule « ; » pour former la commande suivant :

$ var=$(echo "Mon nom est Mac"); osascript ~/Desktop/mon-script.scpt "$var"

La seconde partie consiste à créer le script AppleScript et de collecter le contenu de la variable qui est passée, la structure du script est la suivante :

on run argv
       repeat with i from 1 to count of argv
              tell application "Finder"
                      activate
                      display dialog (item i of argv)
               end tell
       end repeat
end run
 

Il s’explique ainsi. L’exécution du script s’appuie sur des arguments (on run argv). La ligne suivante boucle sur le nombre d’arguments fournis. 

Image 01

Ensuite, le code entre les commandes « tell » et « end tell » est exécuté avec chaque argument.

Dans l’exemple présenté le Finder affiche le texte passé en argument, celui stocké dans la variable « argv ».

Vous pouvez utiliser cette astuce pour réaliser des opérations sur les fichiers AppleScript tout en plaçant la commande dans un script Shell.

Henri Dominique Rapin

AppleScript :: Comment vider la corbeille automatiquement ?

SEScriptEditorX

Comment vider la corbeille automatiquement ?

La corbeille est souvent pleine et on oublie bien souvent de la vider. Cela peut être ennuyant lorsque les fichiers sont gros, ils occupent un espace inutile sur votre disque dur.

 Personnellement j’utilise Hazel, un utilitaire payant qui permet de supprimer les fichiers placés dans la corbeille en fonction de leur ancienneté ou de la taille maximale que peut contenir la corbeille (1 Go dans la copie d’écran).

 

Image 01

(fenêtre de configuration de HAZEL).

Mais ce produit a un coup et si vous n’utilisez pas sa fonction principale qui est d’organiser vos fichiers et dossiers, cette solution est peut être chère.

 Il est possible de vider une corbeille en utilisant Applescript, les trois lignes de codes sont simples :

 

tell application "Finder"
empty the trash
end tell

 

Image 02

(le script dans l’éditeur Applescript)

La première ligne signifie que les commandes qui suivront seront adressées au « Finder ». La seconde (et la plus importante) ordonne le vidage de la corbeille enfin la troisième, clos la commande « tell » en fermant  le script.

L’automatisation du vidage de la corbeille peut se faire dans Automator comme ceci :

Lancer Automator, sélectionnez « Processus » ou «  Alarme Calendrier « si vous souhaitez programmer suivant une certaine fréquence le vidage de la corbeille.

Placez l’action « Exécuter un Script AppleScript », puis placez les trois lignes de codes au milieu des deux lignes déjà présentes.

 

Image 02

(le script dans Automator)

 

Enregistrez le flux comme une application, il vous suffira ensuite de cliquer dessus pour vider la corbeille, si vous optez pour une alarme « Alarme Calendrier » sélectionnez l’heure d’exécution puis la fréquence (tous les soirs ou toutes les semaines).

 Henri Dominique Rapin

AppleScript :: Comment Remplacer un fichier par un autre ?

SEScriptEditorX

Comment Remplacer un fichier par un autre ?

Vous souhaitez remplacer un fichier par un autre, pas de problème, AppleScript saura effectuer cette opération, il existe deux approches :

 Dans notre exemple, le script copie le fichier « images.jpg » depuis le dossier « Documents » vers le dossier « mes_images » en remplaçant le fichier s’il existe.

La première solution consiste à utiliser la commande « duplicate » comme ceci :

tell application "Finder"
duplicate POSIX file "/Users/dom/Documents/image.jpg" to POSIX file "/Users/dom/Documents/mes_images/" with replacing
end tell

Image 01

(le script dans l’éditeur de script, notation Unix)

Une autre approche assez similaire, cette fois avec la commande « move » : 

tell application "Finder"
    move POSIX file "/Users/dom/Documents/image.jpg" to POSIX file "/Users/dom/Documents/mes-images/" with replacing
end tell

Notez que dans les deux précédentes propositions nous avons utilisé la notation Unix en indiquant un chemin de type Unix avec la commande « posix » :

Vous pouvez aussi indiquer le chemin à la mode « Apple/finder » : dans ce cas les barres latérales sont remplacées par des « : » comme ceci : 

move file "Macintosh HD:Users:dom:Documents:image.jpg" ¬
to "Macintosh HD:Users:dom:Documents:mes_images” with replacing

 Cette fois avec le commande « duplicate « :

 duplicate file "Macintosh HD:Users:dom:Documents:image.jpg" ¬
to "Macintosh HD:Users:dom:Documents:mes_images”" with replacing

Image 02

(le script dans l’éditeur de script d’Applescript)

 S’il y a peu de différences entres les deux notations de chemin (Path en Anglais) je lui préfère la version Unix, elle permet iser des notamment alias ou des raccourcis vers le dossier de l’utilisateur.

Henri Dominique Rapin

AppleScript :: Comment Monter et démonter un disque dur avec AppleScript ?

SEScriptEditorX

Monter un disque signifie simplement le faire apparaître sur le bureau, « démonter » c’est bien sur faire l’inverse. Vous pouvez par exemple monter un disque dur pour effectuer une sauvegarde, puis une fois l’opération réalisée,  le « démonter » car il n’a pas de raison pour rester sur le bureau.

Plusieurs méthodes existent, celle qui fonctionne le mieux (pour moi) est la suivante, elle allie AppleScript et Unix :

— Monter le disque

 set Mon_disque to "Archive"
do shell script "diskutil mount `diskutil list | awk '/ " & Mon_disque & " / {print $NF}'`"

— Démonter le disque

set Mon_disque to « Archive »

do shell script "diskutil unmount " & quoted form of ("/Volumes/" & Mon_disque)

Dans les deux cas j’utilise DiskUtil, une commande livrée par Apple, c’est le pendant de l’utilitaire disque.

Image 01

Henri Dominique Rapin

Comment contrôler le Terminal avec Automator ?

TERMINAL 128X128

Il n’y a pas d’action au sein d’Automator qui permet de piloter le Terminal. Il peut toutefois s’avérer utile de lancer une commande Unix dans Automator.

Ce qui est diffèrent de l’exécution d’un script Shell avec l’action « Exécuter un script Shell ». Dans ce dernier cas le résultat peut être récupéré pour une utilisation dans l’action suivante.

La solution la plus élégante consiste à passer par un AppleScript.

1 – Lancer Automator.

2 – Sélectionnez « Application » pour créer une application depuis Automator.

3 – Sélectionnez l’action « Executer un script AppleScript ».

4 – Saisissez le code suivant :
on run {input, parameters}
tell application "Terminal"
activate
do script with command "ls /Applications/
end tell
end run

Le résultat devrait être le suivant :

 

Capture d écran 2012 05 21 à 20 05 22

La commande « ls » utilisée dans le terminal, produit la liste des fichiers placés dans le dossier indiqué comme argument à savoir dans cet exemple « /Applications/ ».

Henri Dominique Rapinenri Dominique Rapin

Finder :: Comment utiliser les services « wordService » de Devon Technology…

DEVON est un éditeur de logiciels allemand très connu pour deux logiciels « DEVON Think Pro » et « DEVON agent », le premier est un outil de gestion documentaire, la référence sur Mac et le second une sorte de « robot » de recherches d’information sur Internet, lui aussi une référence sur Mac.

DEVON propose plusieurs outils gratuits, dont « WordService » (rien à voir avec Microsoft Word). Il s’agit d’un service qui fournit 37 fonctions, les plus populaires sont les fonctionnalités de conversions de texte, de formatage ou de lecture du texte sélectionnés ainsi que l’insertion des données comme la date ou d’afficher des statistiques sur la sélection.

 Ils sont très pratiques et ils permettent par exemple de changer la case d’un texte, pour en un clic les transformer de minuscule ou majuscule par exemple.

 Ce service une fois installé fonctionne avec toutes les applications récentes, c’est à dire « Cocoa » comme : Textedit, Mail, Stickies, Notes, Fire, OmniWeb, ProjectBuilder or TeXShop), mais pas dans Microsoft Word.

 Vous pouvez télécharger « WordService » à cette adresse : http://www.devontechnologies.com/download/products.html

Le fichier est à l’origine compressé et il sera « décompressé », placez dans le dossier « Téléchargements » de votre Mac.

Pour l’installer il faut placer le fichier « WordService.service » dans le dossier « Services » dans le répertoire Bibliothèque, qui comme vous le savez est caché dans la dernière version Mac OS X LION.

Voici une commande à placer dans le TERMINAL qui  rend l’opération plus simple :

$ open ~/Library/Services

Note : la tilde s’obtient en pressant les touches « alt » et « n »

Image01

(la commande saisie dans le TERMINAL)

Cela a pour objectif d’ouvrir directement la fenêtre de ce dossier. Glissez y le fichier « WordService.service ».

Vous pouvez imaginer que cela suffise, non, il faut activer individuellement les services. L’opération est simple, lancez les préférences système, puis dans le panneau « Clavier » sélectionnez l’onglet « Raccourcis clavier ».

Dans la colonne de gauche sélectionnez « Services », puis dans celle de droite descendez jusqu’à la section « Texte ».

Image02

(Le panneau de préférence « clavier » listant les services actifs dans la section « texte »)

Là plusieurs lignes sont cochées, d’autres pas. Les 37 actions proposées par DEVON ont toutes des titres en Anglais, par exemple « All Caps » transforme le texte sélectionné en majuscule, « Long Date » et « Long Date & Time » ajoute la date et l’heure dans le fichier texte. L’action « Remove » comme « Remove Line Ending » supprime la fin de ligne et ainsi de suite…

Astuce :

Plus vous aurez d’applications sur votre Mac et plus vous aurez de service, il devient difficile de savoir quelle application propose quel service. Il existe pourtant une astuce, faites un clic droit sur l’astuce et sélectionnez « Afficher dans le Finder », cela vous conduit directement vers l’application qui offre ce service. Concernant le « WordService », c’est le fichier « WordService.service » qui est présenté.

Image03

(La liste des services affichant l’option « Afficher dans le finder »)

Une fois l’installation terminée et la sélection des services effectuée. Il faut vérifiez que le service fonctionne. Pour cela ouvrez un éditeur de texte comme « texEdit », créez un nouveau document.

Placez du texte et sélectionnez le, puis choisissez dans le menu contextuel (clic droit de la souris) ou si vous êtes plus à l’aise dans le menu « Services » du premier menu de votre application, il porte en général le nom de l’application.

Vous y trouverez deux lignes, le premier porte le nom de « Statistics.. » qui retourne le nombre de caractères à partir du texte sélectionné, comme ceci :

IImage04(Fenêtre de résultat affichant les statistiques du texte sélectionné)

C’est une fonctionnalité qui manque à certaines applications…

Pour les actions, en sélectionnant par exemple « All Caps » vous aurez le texte sera mis en majuscule.

Image05

(Menu contextuel, affichant les services dont « All Caps »)

Plein d’autres actions sont disponibles : comme de trier les lignes, de supprimer les espaces en début et en fin de ligne, de décaler à gauche ou à droite le texte, de supprimer la fin des lignes, de supprimer les espaces multiples et ainsi de suite, il faut les tester et garder celles qui vous seront les plus intéressantes.

Ces « services » ne fonctionnent que sur du texte, cela ne marche pas avec un fichier sélectionné dans le Finder par exemple. Par contre si vous passez en mode Edition du nom du fichier, là vous pourrez utiliser ces services, comme par exemple mettre le titre d’un document en minuscule ou majuscule…

Les « WordServices » de DEVON sont pertinents et lorsque l’on manipule du texte dans plusieurs éditeurs, retrouver à chaque fois les mêmes services et raccourcis est un plus indéniable. A utiliser sans limites.

Juste une remarque, les noms des services sont censés être localisés en Français mais sur mon Mac cela n’est pas le cas. Mais il faut dire que je bidouille beaucoup ma config…

Mail :: Comment déplacer vers la boite aux lettres « Archives » les anciens messages ?

SEScriptEditorXDeux approches, La première consiste à créer une « boite aux lettres intelligente » et de regrouper dans cette boite aux lettres  virtuelle les messages reçus au de la d’une période (1 ans, 1 mois etc..). Cette solution vous permet d’identifier individuellement les messages anciens, et vous donne la possibilité de déplacer manuellement le message vers un dossier ou vers la BAL « Archives ».

Pour réaliser cette boite aux lettres intelligente :

Image 01

(Fenêtre de conditions de la boite aux lettre intelligente)

Avec AppelScript :

Une autre approche existe, elle est plus « directive « mais nécessite l’utilisation d’Applescript.

Vous pouvez créer une application depuis l’éditeur d’Applescript, sinon vous pouvez créer un service qui s’exécutera dans Mail ou plus facilement créer une application « Automator ».

Voici le script AppleScript :

-- Définition du dossier de destination des mails.
set DestinFolderName to "Archives"
-- Définition de la période au-delà de laquelle les messages seront archivés
-- Cette période est exprimée en jour (30 * days) soit 30 jours dans notre exemple
set staledate to (current date) - (30  * days)
tell application "Mail"
Collecte de tous les messages dépassant cette période
set msgs to every message of message viewer 1 whose date received is more than staledate and read status is true
-- Boucle sur tous les messages récupérés
repeat with aMsg in msgs
        set acct to account of mailbox of aMsg
        -- Récupère si le compte possède une BAL « Archives »
        if name of every mailbox of acct contains DestinFolderName then
            -- Si oui alors les messages sont déplacés dans la BAL « Archives »
            set archiveFolder to mailbox DestinFolderName of acct
            move aMsg to archiveFolder
        end if
    end repeat
end tell

Image 02

(le script complet dans l’éditeur de Script)

Si vous souhaitez l’intégrer dans Automator voici la procédure à suivre : Lancez Automator, sélectionnez « Service ». La particularité de services est qu’il récupère des données, c’est le bandeau  en haut de la fenêtre, là sélectionnez « Mail » pour l’application et « pas d’entrée » (le premier menu déroulant).

Image 03

(Les script placé dans Automator pour créer un service)

Placez l’action « Exécuter un script Applescript » et copiez ce script. Enregistrer le service. Il sera disponible dans Mail dans le menu « Mail » sous la ligne « Services ». Vous pouvez ajouter un raccourcis clavier en le configurant dans les préférences claviers. Votre Service apparaitra dans la section « General ».

Automator :: Comment quitter une application avec Automator et avec AppleScript ?

Automator Voici deux solutions pour automatiser le fait de quitter une application déjà ouverte : La première consiste à utiliser « Automator ».

Il suffit d’ajouter à votre flux l’action « Quitter l’application ». Vous remarquerez la case à cocher qui vous permet d’enregistrer les fichiers ouverts. A ce propos, les applications Apple sous Moutain Lion (et dans une moindre mesure avec Lion) n’ont plus de fonction « Enregistrer ». L’application se charge de sauvegarder toutes les modifications au fur et à mesure.

(Pour des applications comme le Terminal, par exemple, cette case n’a pas lieu d’être cochée, il n’y a pas de document ouvert)

Image 01

(le flux automator avec l’action « quitter l’application »).

La seconde consiste dans l’utilisation d’AppleScript :

Dans ce cas la commande est simple il s’agit de « Quit » comme ceci :

tell application "Safari"
  quit
end tell

N’oubliez pas d’identifier l’application et de placer son nom dans la première ligne du script. Dans l’exemple ci-après, il s’agit de l’application d’Apple : « Safari ».

Image 02(l’éditeur de script AppleScript avec le mini script)

En utilisant ces deux techniques, vous pouvez créer des « applications » et les placer dans le Dock ou sur le Bureau, elles vous permettront de quitter rapidement une application sans passer par un menu fichier et la commande « Quitter », c’est parfois bien plus rapide.

Comment traiter les copies des gros fichiers avec AppleScript ?

SEScriptEditorX

Il existe bien la commande AppleScript « copy », elle permet de copier un fichier placé dans un emplacement à un autre, ne pas confondre avec « move » qui elle déplace les fichiers d’un endroit vers un autre.

La commande « Copy » d’AppleScript n’est pas la plus rapide, je lui préfère la commande Unix « cp » qui se trouve plus robuste et qui possède de nombreuses options.

Vous pouvez mélanger les deux solutions et lancer la copie depuis AppleScript en utilisant la commande Unix :

do shell script "cp " & Mon_Dossier_Source & " " & mon_dossier_cible

Le script complet avec des variables pour stocker les chemins :

Image 1

Ce script se traduit ainsi :

« Do shel » invoque l’exécution d’une commande Shell depuis AppleScript, ensuite vous devez indiquer le chemin du fichier à copier, puis la destination du dossier et enfin le nom du fichier.

Petite astuce :

si vous ne voulez pas attendre la fin de la copie du fichier, il suffit de rediriger la sortie de la commande vers « /dev/null 2>&1 & »  (pour en savoir plus ce fichier : http://fr.wikipedia.org/wiki//dev/null) l’exécution du script s’interrompra alors que la copie continuera.

Utilisez le script comme ceci :

 do shell script « cp  » & Mon_Dossier_Source &  »  » & mon_dossier_cible & « > /dev/null 2>&1 & »

Image 2(Fenêtre de l’éditeur AppleScript, cette fois avec la redirection vers « /dev/null »)

AppleScript :: Tuer un processus

SEScriptEditorX

 

Vous pourriez souhaiter annuler la copie du fichier, si vous tentez l’opération dans l’éditeur de Script, il ne répondra pas immédiatement… il prend son temps.

Dans cette version, nous informons l’utilisateur qu’une erreur est intervenue et nous lui demandons s’il souhaite continuer la copie : 

Nous récupérons dans la variable « mon_pid » le numéro de pid de la commande « cp » en cours d’exécution. Chaque programme ou commande

possèdes son identifiant unique le « pid ».

mon_pid to do shell script"ps aux | grep Safari | grep -v grep"
set pid to second word of mon_pid
display dialog pid
do shell script "kill " & pid

 

Le script s’explique ainsi :

 « mon_pid » contient le résultat d’une commande qui recherche l’application « Safari », la variable « pid » renferme le numéro du pid (qui est le 2nd mot contenu dans la variable « mon_pid »).

 Pour confirmation j’affiche le numéro du pid. Et enfin j’exécute la commande « Kill » qui tue le processus qui porte le numéro contenu dans la variable « pid ».

 Voici une version plus élégante du Script dans l’éditeur de Script.

 

Image 3

(Le script au complet dans l’éditeur de script avec la gestion des erreurs)

AppleScript :: Rechercher et remplacer un élément dans les contacts

SEScriptEditorX

Imaginons que vous souhaitiez remplacer tous les numéros commençant par « 01 » par le texte suivant « +33 ». Vous pouvez parcourir tous les attributs de type « téléphone » dans les contacts ou rechercher et remplacer les caractères voulus.

Voici le corps du script :

tell application « Contacts »

       repeat with personne in (get people)

               repeat with n in (get value of personne’s phones)

                      if n begins with (« 01 ») then

                             (* appliquer ici le changement souhaité *)

                      end if

               end repeat

       end repeat

end tell

 

Ce script est rapide, il explore tous les attributs d’un contact et recherche ceux qui commencent par « 01 ».

Avant d’apporter des modifications en masse sur des contacts ou des fichiers, il est bon de vérifier ce qui va être modifié, une astuce consiste à utiliser la commande « log » celle-ci affiche le résultat d’une variable par exemple.

Dans cet exemple, j’affiche le contenu de « Num » puis la version finale du numéro placé dans la variable « x ». 

Image 4(l’éditeur de script avec le résultat de la commande log)

AppleScript :: Du changement dans Applescript sous Mountain Lion

SEScriptEditorXApplescript est un langage naturel de Scripting. Ce langage reprend la syntaxe anglaise, ce qui le rend facilement utilisable pour les Anglo-Saxons mais beaucoup moins naturel pour nous francophone… Il permet pourtant d’automatiser des opérations au sein des applications et se révèle bien plus puissant qu’Automator son petit frère.

Contrairement aux autres langages de Scripting, Applescript doit être « compilé » avant d’être enregistré. Avez-vous essayé d’enregistrer un script avec une erreur de syntaxe ? Et bien ce n’est pas possible enfin … jusqu’à Mountain Lion.

Cela est dû à la sauvegarde en continu des fichiers (« Auto save » en Anglais et utilisée en français surle site d’Apple). Si cette fonctionnalité est apparue dans Lion elle n’a été implémentée dans l’éditeur de script que dans Mountain Lion.

Image 01

(la fenetre de l’editeur AppleScript avec la gestion des versions)

Le problème est le suivant, vous ne pouvez « modifier » en continu un script compilé… puis ce qu’il doit etre validé d’un piint de vue de la syntaxe. Par contre enregistrer en continu un fichier texte ne pose pas de problème, mais un exécutable (fichier compilé) c’est une autre affaire. Apple a une fois de plus contourné le problème en proposant un nouveau format de fichier.

Pour contourner le problème du fichier « .scpt » impossible à enregistrer en continu. Apple a développé une solution pour les fichiers « .app ». (Pour rappel, les fichiers « .App » se comporte comme des applications Apple, ce sont en réalité des dossiers, des exécutables et des objets graphiques).

L’éditeur de script enregistre deux versions du script dans le même dossier, l’une en mode texte et l’autre en mode compilé. L’opération est transparente pour l’utilisateur, il n’en voit qu’une des deux dans l’éditeur de texte, alors que la version compilée du script sera présente dans le dossier de l’application. A noter que le script au format texte porte l’extension « .rtf » (plutôt étrange).

Image 02

(Deux versions du Script sont présentes, l’une auformat RTF et l’autre avce l’extension SCPT)

Le problème est à deux niveaux : Vous pouvez avoir une différence dans votre script entre la version texte « affichée dans l’éditeur de script » et la version Texte qui n’est pas compilée, donc non vérifiée.

En théorie Apple ne créé le fichier texte que lorsqu’il y a un souci à la compilation. Si donc vous rencontrez une Application (créée avec Applescript) et contenant un fichier RTF alors il y a un souci. L’autre souci se pose lors de l’utilisation de ces scripts avec des versions antérieures.

Image 03

(Message d’alerte indiquant que des modifications n’ont pas été compilée)

Ce fonctionnement est complètement transparent pour l’utilisateur, mais il doit être connu. La question que l’on peut légitiment se poser est pourquoi implémenter de l’enregistrement en continu dans un éditeur de script ? 

Pour info,  vous pouvez enregistrer vos scripts Apple Script sous 4 formats, chacun ayant son extension :

  1. Fichiers avec l’extension « .scpt », elle concerne les scripts au format « compilé ». Il s’agit du type de fichier le plus courant. Double cliqué dessus et le script sera ouvert dans l’editeur de script. Pour être compilé un script doit être syntaxiquement correct.
     
  2. Fichiers avec  « .applesscript » comme extension, utilisée pour enregistrer les fichiers au format texte.
    Dans ce format le script peut être ouverte avec n’importe quel éditeur de texte.
     
  3. Fichiers avec l’extension « .scptd », utilisée pour enregistrer les scripts (.scpt) en tant que fichier. Pour une utilisation comme la création d’extension pour AppleScript. Voici le contenu du « paquet » :

Image 04(Dans ce format, le script et placé dans une dossier et porte le nom de « main.scpt »)

  1. Fichiers avec l’extension « .app », cette fois utilisée pour les fichiers compilés (.scpt) utilisables comme une application dans le Finder (dossier avec sous dossiers). Voici le contenu de l’application :

Image 05

 (le contenu d’une application créée depuis un fichier Apple script)