HomePod : Piloter l’enceinte depuis un Mac !

Les bonnes idées arrivent souvent au réveil … voici une façon très simple de commander votre HomePod avec un Mac. Il faut utiliser la fonction « text to speech » et vous voilà capable de lancer n’importe quelle commande depuis un Mac pas besoin de la programmer grâce à Calendriers :

Le principe est simple, ouvrez l’ éditeur AppleScript et placez cette ligne :

Play « Dis Siri, quel temps fera-t-il demain ? »

Cliquez sur le bouton « play » et votre Mac commence à parler, s’il n’est pas trop loin du HomePod, celui-ci répondra à la commande.

C’est bien la preuve que Siri ne détecte pas encore qui émette la commande…

Pour placer une pause entre deux commandes, utilisez la commande pause et le nombre de secondes :

Play « Dis Siri, quelle météo aujourd’hui ? «
delay 5
Play « Dis Siri, quelles sont les news ? »

as-say.png
Pour choisir une voix, utilisez son nom comme cela :

Play « Dis Siri, qui est napoléon ? » using « Agnes »

Par défaut il y a trois voix synthétiques dans macOS. Une seule est pré-chargée : Thomas. Pour obtenir des voix féminines vous devrez les activer.

Vous pouvez aussi placer le script dans Automator et programmer son exécution grâce à Calendriers. Choisissez pour cela la création d’une Alarme calendrier.

La commande Play fonctionne aussi dans le Terminal…

Charger et activer les voix féminines Françaises dans macOS :

Il existe 2 voix supplémentaires, elles sont féminines. Pour les activer procédez comme suit :

  1. Ouvrez les préférences Système.
  2. Sectionnez le panneau «  Accessibilité »

accessibilite-voix.png

  1. Cliquez sur la section « Parole «
  2. Dans le menu Voix Système, ouvrez « Personnaliser …»

Assurez-vous que les voix Françaises sont toutes cochées.

accessibilite-voix-2.png

Il existe trois voix à l’accent Québécois si cela vous intéresse ;-). Vous devrez les chercher plus bas dans le site .

Une fois cochées, les voix seront téléchargées.

Vous pouvez utiliser la voix par défaut où :

  • Audrey
  • Aurèlie
  • Thomas

(La première étant celle qui est la mieux comprise par le HomePod)

Les voix féminine Anglaises

  • Agnès
  • Kathy
  • Princess
  • Vicky
  • Victoria

Les Voix Masculines Anglaises

  • Alex
  • Bruce
  • Fred
  • Junior
  • Ralph

Les Voix originales !

  • Albert
  • Bad News
  • Bahh
  • Bells
  • Boing
  • Bubbles
  • Cellos
  • Deranged
  • Good News
  • Hysterical
  • Pipe Organ
  • Trinoids
  • Whisper
  • Zarvox

Amusez vous bien 😉

HDR

HomePod et Radio : Scripting avec AppleScript

Dans ma quête pour automatiser le lancement d’une Radio sur ma HomePod, j’ai exploré plusieurs options, la seule qui fonctionne simplement s’appuie sur AppleScript.

Mon objectif contient deux éléments:

  1. Je dois sélectionner le HomePod pour la sortie du son
  2. Je dois lancer une Radio depuis iTunes (France Info dans cet exemple)

Sélectionner le HomePod pour écouter le son

Grâce à iTunes, il est possible d’obtenir la liste des appareils Airplay. En exécutant cette commande, vous recevrez une liste d’appareils utilisables avec AppleScript :

tell application "iTunes"
get name of AirPlay devices
end tell

applescript-airplay-liste.pngDans cette liste on trouve le Mac sur lequel le script est exécuté (Ordinateur) des Apple TV et HomePod, ainsi que les appareils compatibles comme des enceintes.

Pour signifier à iTunes qu’il doit utiliser un ou plusieurs appareils, utilisez le nom tel qu’il est fourni dans la liste :

tell application "iTunes"
pause 3
set current AirPlay devices to AirPlay device "Bureau"
end tell

Applescript-airplay-set.pngJ’ajoute une petite pause de quelques secondes, le temps à iTunes de se lancer.

Grâce à ce script vous pouvez modifier l’appareil utilisé pour l’écoute. Notez que l’on utilise le nom direct du ou des appareils Airplay.

Et voilà pour ce qui est de la sélection du HomePod.

jouer une radio

Apple Script ne gère pas bien les radios ou les stations de Radio Beat 1. Le plus simple est de ne pas tenter de lancer la radio depuis iTunes mais de jouer d’un subterfuge.

Tous les éléments dans Apple Music ont une URL. Que cela soit une playlist, une radio, une station elles ont toutes une adresse URL. C’est le moyen utilisé par Apple pour partager les éléments qui se trouvent dans Apple Music ou iTunes.

Ces URL, une fois cliquées sont ouvertes directement dans iTunes sur Mac ou Music sur iOS, c’est très pratique.

Commencez par récupérer le lien vers une radio ou plagiste que vous souhaitez écouter au réveil.

Sur Mac, sélectionnez la radio puis dans la section « … » etdans le menu sélectionner « partager la station « et « copier le lien ».

itunes-liens-url-radio.png

Retournez dans l’éditeur AppleScript puis ajoutez ces trois lignes de script :

tell application "Safari"
open location "https://itunes.apple.com/fr/station/franceinfo/ra.1352468973"
end tell

Elles imposent à Safari d’ouvrir cette URL, Safari se charge ensuite de passer la commande avec le lien à iTunes qui lance la radio.

Une fois terminé Ouvrez Automator, sélectionnez un événement Calendrier puis l’action : Exécuter un script AppleScript.

automator-menu-principal.png

Placer le script grâce à un copier / coller. Enregistrez-le.

L’application Calendrier s’ouvre, définissez l’heure et la récurrence de son exécution. Tous les matins à 8:00 par exemple.

Automator-script-airplay-radio.png

Ça parait un peu compliqué, mais pour le moment Siri n’est pas en mesure de programmer un réveil avec l’écoute d’une radio. Cela arrivera obligatoirement mais quand ?

Deux remarques :

  • Cette solution fonctionne avec tous les appareils Airplay ! pas uniquement des HomePod ou des apple TV !
  • A la place d’une radio, vous pouvez utiliser une Playlist ou un album !

macOS reste tout de même un plateforme idéale pour l’automatisation… il y a une solution à tous les problèmes 😉

HDR

macOS : Confirmer automatiquement les SPAM (email indésirable) avec AppleScript

Il arrive parfois que les messages considérés par l’application Mail soient placés dans la boite Messages : Indésirables, sans que le mail soit affublé de l’icône de message indésirable : icon-junk.png

Cela s’explique par l’une des deux raisons :

  1. La première : le message est identifié par le serveur de messagerie comme un spam (et non par Mail).
  2. Seconde raison l’inverse,  Mail est seul à considérer que ce mail est douteux.

mail-junk-02.png

Voici donc un petit script AppleScript qui permet de placer les messages (non confirmés comme des spam) en pourriels. Exécutez le une fois par jour.

Quelques remarques :

La boite aux lettres des messages « Indésirables » est nommée “junk” en anglais.

Le script fait le tour de tous les messages placés dans cette boite et affecte le statut : « junk mail » à tous ceux qu’il trouve.

Le script est encadré par une commande try qui permet d’évaluer qu’il s’exécute correctement sinon il rien n’est exécuté.

tell application “Mail”
repeat with theMessage in (every message of mailbox “Junk” of every account where junk mail status is false)
try
set junk mail status of theMessage to true
end try
end repeat
end tell

Idéalement, vous placerez ce script dans un flux Automator pour qu’il soit exécuté suivant une fréquence donnée.

mail-junk-03.png

Pour ce faire, lancez Automator, dans la fenêtre d’accueil sélectionnez événement Calendrier.

Ajoutez au flux une action : exécutez le script AppleScript et placez le code ci-avant.

Enregistrez et dans Calendrier, sélectionnez la fréquence d’exécution, quotidien etc… suivant votre besoin.

Vous pouvez bien sur vous contenter de lancer le script depuis l’éditeur de script. Une alternative consiste à créer une application dans Automator puis à y placer ce code. Une fois l’application créée, il suffit d’un fou leclic dessus pour la lancer.

HDR

Comment obtenir le titre et l’artiste joué actuellement dans Spotify avec Applescript ?

SEScriptEditorX

Voici un petit script qui vous permet de récupérer le morceau joué dans Spotify.

Le script est simple : 

tell application « Spotify"
set Artiste to the artist of current track
set Titre to the name of current track
end tell

display dialog "Titre : " & Titre & " Artiste : " & Artiste

Image 01 (La fenêtre de l’éditeur de script avec le script et le résultat)

 

Henri Dominique Rapin 


Applwe reasonably small Recevez toutes les semaines le résumé des publications : Abonnez-vous à la Newsletter !

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 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 

Comment vider la corbeille automatiquement ?

Finder

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 (http://www.noodlesoft.com/hazel.php), 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 des options de la corbeille dans 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 03 (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 toute les semaines).

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 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

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 ».

iTunes :: Comment désactiver la partage avec AppleScript et Automator

ITunesVous vous déplacez avec votre MacBook et parfois vous oubliez de désactiver certains partages placés dans les applications d’Apple. Rien de grave si ce n’est qu’en vous connectant sur le réseau Wi-Fi dans un hôtel, tous les autres clients peuvent accéder à vos partages.

 Pour remédier à ce petit problème, voici deux scripts qui sauront désactiver ces partages. Le principal problème que l’on rencontre avec les applications Apple est qu’elles sont partiellement scriptables avec AppleScript, toutes les fonctions ne sont pas disponibles dans le Dictionnaire Apple Script d’iTunes. Et certainement pas la fonction de partage.

 Voici comment désactiver le partage dans iTunes :

 

Image 01

(Le panneau de préférence d’iTunes, onglet « Partage « )

 En version scriptable avec AppleScript :

 

Image 02

 (le script dans l’éditeur Applescript)

 Le script suivant s’appuie sur « System Events » et permet de piloter les fonctions cachées d’iTunes :

 

tell application « iTunes » to activate

tell application « System Events »

            tell process « iTunes »

                        click menu item 3 of menu « iTunes » of menu bar 1

                        click button « Partage » of tool bar 1 of window 1

                        click checkbox « Partager ma bibliothèque sur mon réseau local » of group 1 of window 1

            end tell

end tell

 

Le script s’explique comme ceci :

Le premier « tell » indique l’application cible et l’active.

Le second indique que l’on va utiliser « System Events « pour piloter l’interface graphique du  premier. On revient sur le « processus » iTunes qui est en cours d’exécution, sans quitter « System process ».

 

La première ligne de commande d’interface :

 click menu item 3 of menu « iTunes » of menu bar 1

 

Elle nous permet d’ouvrir les préférences d’iTunes, c’est le troisième élément du menu « iTunes » placé sur la barre des menus numéro 1 (il n’y en a qu’une)

 click button « Partage » of tool bar 1 of window 1

 

On simule ensuite le clic de souris sur l’onglet « partage ».

 click checkbox « Partager ma bibliothèque sur mon réseau local » of group 1 of window 1

 

On termine par décocher l’option de partage, et c’est tout. L’opération s’exécute très rapidement entre une et deux secondes.

 L’idéal est de fermer la fenêtre des préférences en plaçant cette ligne :

 click button « Ok » of window 1

 

Pour créer une application qui désactivera ou activera le partage, placez le tout dans un flux Automator comme ceci :

 Lancez Automator, sélectionnez « Application » et placez sur le plan de travail l’action « Exécuter un script AppleScript » et copiez le script.

 

Image 03

(Le script AppleScript dans Automator)

 Enregistrez le tout sous une application, et il vous suffit simplement de cliquer dessus pour interrompre ou activer le partage iTunes.

Automator :: Comment enregistrer automatiquement le contenu du presse-papiers dans une note de l’application « Notes » ?

Automator

Il est facile de placer le contenu du presse-papiers dans un fichier texte (voir l’astuce précédente). Mais qu’en est-il du presse papier ?

Le problème est qu’il n’y a pas d’action Automator pour l’application « Notes » livrée avec Mountain Lion. Il faut donc utiliser AppleScript.

Le script est simple le voici :

 

set noteHTMLText to "<pre style=\"font-family:Helvetica,sans-serif;\">" & (the clipboard as Unicode text) & "</pre>"
tell application "Notes"
make new note at folder "Notes" with properties {name:"Presse-papiers", body:noteHTMLText}
end tell

 

Il s’explique ainsi.

La première ligne sert pour récupérer le contenu du presse-papiers (The Clipoboard) et transforme ce contenu en HTML. Le HTML est le langage de description des Notes dans l’application fournie par Apple.

La section « Tell application ‘’Notes’’ » lance l’application et l’ouvre si nécessaire.

La ligne « Make new note » créée la note dans l’application avec le titre « Presse-papiers » et le corps (body) avec le contenu de la variable « noteHTMLText ».

Il suffit donc de créer un service dans Automator, puis d’ajouter l’action « Exécuter un script AppleScript » et de copier le script.

Image 01

 (Flux complet de création d’une note depuis le presse papier)

 

Il ne vous reste plus qu’à créer un raccourci sur ce service et en une simple combinaison de touches vous créez une nouvelle note dans « Notes ».

A noter ! que les notes se synchronisent avec iCloud, si donc vous avez un iPhone ou un iPad, la note se retrouvera automatiquement sur cet appareil. Idem sur Mac si le même compte iCloud est configuré sur tous les ordinateurs.

AppleScript :: Comment modifier les paramètres de sécurité par scripts ?

SEScriptEditorX

 

AppleScript :: Comment modifier les paramètres de sécurité par scripts ?

Voici trois scripts qui vous permettront de scripter les préférences du panneau de sécurité. Ils servent à automatiser le paramétrage de sécurité lors du lancement de l’écran de veille, en fonction du paramètre sélectionné, un mot de passe sera ou non demandé.

 

Image 02

 (Le panneau de préférences et Confidentialité onglet « Général »)

 Le premier active la demande du mot de passe lors de la sortie de la veille du Mac:

tell application "System Events" to set security preferences's require password to wake to true

Image 02

(le script dans l’éditeur de script)

 Le second fait simplement l’inverse, le mot de passe ne sera pas nécessaire après le lancement de l’écran de veille :

tell application "System Events" to set security preferences's require password to wake to false

 

Image 03

(le script dans l’éditeur de script)

 Passer d’un mode à un autre et inversement…

tell application "System Events" to set security preferences's require password to wake to not (security preferences's require password to wake)

 

Image 04

(le script dans l’éditeur de script)

 Henri Dominique Rapin 

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)

Mac :: Un pack d’analyse statistiques gratuit pour Microsoft Excel 2008

Un programme « data analyis » est disponible pour Excel, cette fonction était livrée dans la version 2004 sous le nom d’ « Analysis Toolpack » ou analyse statistiques à cause de la disparition de VBA dans 2008 « Data Analysis » l’outil de statistique n’a pas été livré avec 2008. (VBA est le language de Macro d’office)

Si donc cette fonction vous manque vous pouvez télécharger un « équivalent  » en suivant ce lien:
http://www.analystsoft.com/fr/products/statplusmacle/index.phtml

Le produit est gratuit et est localisé en Français. Cette solution utilise intensivement AppleScript. Il est livré avec un « pas à pas » sou forme de séquence flash en Anglais et des feuilles d’exemples.

Vous le remarquerez en l’utilisant, beaucoup de fonctions sont disponibles dans la version « pro » et donc payante, un comble pour un produit sensé remplacer une fonction qui aurait du être livré avec Excel 2008…

Heureusement qu’ Office « 2010 » ou « 2011 » contiendra de nouveau VBA.

Annonce sur le Blog de Microsoft :
http://www.officeformac.com/blog/Now-Available–Data-Analysis-For-Excel-2008

AppleScript :: Scripter Bento

Comme toute bonne application faite pour le Mac, Bento est scriptable, enfin presque. FileMaker est sur ce point très discret, pas un bout de script à l’horizon. Vous ne devrez compter que sur vous.

Vous quelques lignes qui vous permettront de vous en sortir pour autant que vous ayez quelques connaissances en AppleScript :

Voici comment récupérer quelques informations sur les bibliothèques :

tell application "Bento"
	-- Récupérer le nom de la première bibliothèque
	set nom to  name of first Library
	-- Récupérer le nombre de bibliothèque
	set nombre to number of Library
	-- Récupérer la liste des bibliothèques
	set liste_des_bases to name of every library
end tell

Voici comment travailler sur les enregistrements :

tell application "Bento"
	-- Récupère le nombre d'enregistrements dans la première bibliothèque
	set nombre_d_entree to get number of entry of first library
end tell

Le contenu d’un enregistrement est défini par la classe « cell », et vous pourrez récupérer le champ par la classe « field ». Il existe une commande qui permet de créer un enregistrement « make new entry », mais c’est la seule.

Cette implémentation d’Applescript dans Bento est pour le moment très basique, il aurait été intéressant de traiter les aspects importations et exportations au travers d’Applescript ou Automator. Dans cette version 2.0, nous devrons nous contenter de ces quelques commandes

bento.jpg

Mac :: AppleScript :: Changer la vue d’une fenêtre

Comment changer la vue de la fenêtre principale du « Finder », colonnes, icônes etc..

tell application "Finder"
	set current view of Finder window 1 to (run script "column view")
end tell

Les autres options sont:

- column view	
- flow view	
- group view	
- icon view	
- list view

Attention il faut une fenêtre ouvert…

Image 1.png

Mac :: AppleScript :: Obtenir les informations d’une liste de lecture ou podcast

Voici un script qui permet d’obtenir les information sur les morceaux ou séquences présents dans une liste de lecture ou podcast :

set nfo to {}
tell application "iTunes"
	set podtracks to every track of playlist "podcasts"
	repeat with a_track in podtracks
		set end of nfo to {artist of a_track, album of a_track, ¬
			name of a_track, rating of a_track}
	end repeat
end tell
return nfo -- Liste des informations
Untitled 2.jpg

Mac :: AppleScript :: Ouvrir un fichier .dmg ou « disk image »

En utilisant la commande « open » du Terminal vous pouvez ouvrir ou plutôt « monter » sur le bureau un fichier Image Disk ou .dmg.

do shell script "open mon_disk_image.pkg"
Image 1.png

Mac :: Applescript :: Récupérer la version de Mac OS X

Comment récupérer la version de Mac OS X ?

Le plus direct est d’utiliser la commande « sw_vers » exécutée dans le Terminal.

Cette commande retourne des informations en fonction de l’argument :

- "sw_vers -productName" 		: Retourne le nom de l'OS
- "sw_vers -productVersion" 	: Retourne la version de Mac OS X
- "sw_vers -buildVersion"		: Retourne le Build

La page man de cette commande : http://developer.apple.com/DOCUMENTATION/Darwin/Reference/ManPages/man1/sw_vers.1.html

set os_version to do shell script "sw_vers -productVersion"
Image 2.png