J’ai récemment résolu une problématique client en lui mettant en place un système pour envoyer un iMessage avec AppelScript. Je vous propose donc de vous expliquer rapidement le principe.

Applescript est un langage de scripting simple, embarqué dans tous les Mac depuis longtemps (très longtemps même… 1991). et qui permet d’automatiser simplement des tâches du quotidien. C’est un langage haut niveau, facilement compréhensible pour les développeurs ou non et qui rend bien des services comme dans le cas que je vous propose de découvrir aujourd’hui.

Pourquoi fallait-il envoyer un iMessage avec AppleScript ?

La problématique est simple : Mon client possède une adresse email générique sur laquelle il reçoit des appels d’offres. Il m’explique que souvent, dans ce genre de situation, le premier fournisseur qui répond remporte le marché. De plus, ces AO peuvent tomber à n’importe quel moment étant donné la nature de son activité professionnelle.

Mon client voulait donc être alerté par « SMS » lorsqu’un mail arrive dans cette boîte mail. Il possède un iPhone et un Mac mini fixe avec la possibilité d’être allumé en permanence, je lui ai donc proposé une solution simple, rapide à mettre en place, sans coût de facturation de telecom (sms classiques) et qui fonctionne très bien.

Principe de la solution pour envoyer un iMessage avec Applescript

Le système est simple, voici les grandes étapes :

La boite email générique est configurée sur Apple Mail sur le Mac du client.

Nous allons créer une Règle Mail qui execute un AppleScript à la reception d’un email dans cette boîte.

Le script va ouvrir l’application Messages sur le Mac et générer le iMessage.

Ecriture de l’Apple Script

Le script est à placer dans :

/Users/matthieu/Library/Application Scripts/com.apple.mail

Tous les scripts placés dans ce dossier seront affichés dans Mail par la suite, nous permettant de sélectionner le script desiré.

ps : Pour que le script fonctionne, il faut qu’un compte iMessage soit renseigné dans l’application Messages du Mac, cela va de soit.

Bon, pour commencer, ouvrez l’Éditeur de script et copiez le snippet suivant :

tell application "Messages" -- Demande l'ouverture de l'application Messages

 set targetBuddyPhone to "***************.com" -- 1. mettre entre les guillements le numéro ou l'adresse iMessage du destinataire

 set targetMessage to "Nouveau mail sur la boite importante" -- 2. mettre entre les guillements le contenu de votre imessage

 set targetService to 1st account whose service type = iMessage -- precise le mode d'envoi

 set targetBuddy to participant targetBuddyPhone of targetService

 send targetMessage to targetBuddy --envoie le message

end tell

Je ne vous fait pas l’affront de détailler le script, j’ai ajouté des commentaires qui suffiront.

Voici à quoi cela devrait ressembler dans votre éditeur :

Envoyer un iMessage avec AppleScript sur MacEnregistrez bien votre script avec le nom de votre choix. Dans cet exemple, pour moi c’est Envoyer_imessage_alerte. Déplacez le ensuite dans le dossier des scripts de Mail (pour rappel : /Users/matthieu/Library/Application Scripts/com.apple.mail)

nb : Vous pouvez tester le fonctionnement de votre script avec le bouton « Executer le script ». Si un message est envoyé dans l’application Messages, c’est tout bon.

Configurer la règle dans Mail

Votre script est déjà fonctionnel mais afin de vous montrer mon exemple d’automatisation jusqu’au bout, voici comment executer le lancement du script à la reception du mail dans Apple Mail.

  1. Lancez Mail puis rendez-vous dans préférences, puis l’onglet « Règles ».
  2. Cliquez sur « Ajouter une règle ».
  3. Configurez comme suit en selection votre script :

Et voilà.

Vous pouvez faire le test. Envoyez un email sur l’adresse en question. Mail va executer l’AppleScript et vous recevrez un message d’alerte.

Nous avons ici un exemple d’utilisation avec Mail pour envoyer un iMessage avec AppleScript mais potentiellement ce système pourrait être utilisé comme système de notification pour bien d’autres programmes permettant l’execution d’AppleScript.

A bientôt

Catégories : Apple

matthieu

Account manager chez un géant de la tech. Passionné par le numérique et le business qu'il génère. Également entrepreneur et formateur à mes heures perdues.

3 commentaires

blank

Thibaut Le Cornec · 28 mai 2021 à 20 h 59 min

Même si j’aime Apple Script je trouve que cette solution c’est prendre un tank pour défoncer une pote ouverte !

Moi j’aurais simplement configuré le compte mail en question sur l’iPhone, autorisé les notifications de ce compte (sachant que ça l’est normalement par défaut dans Réglages > Mail > Notifications) et aurais choisi « bannière » ou même « alerte » puis j’aurais configuré la récupération liée à ce compte sur « 15 min » dans Réglages > Mail > Comptes > Nouvelles données.

Ainsi toutes les 15 min l’iPhone fetch les mails de ce compte, et si nouveau mail, il y a une notification sous forme de bannière ou d’alerte !

Le seul inconvénient : ça réduira un peu l’autonomie de l’iPhone de devoir fetcher le serveur mail toutes les 15 mins, mais si ça peut aider à éviter qu’un Mac mini reste allumer en permanence c’est pas plus mal, à moi s que ce soit un Mac mini M1 qui ne consomme quasiment rien ^^.

    blank

    matthieu · 28 mai 2021 à 23 h 34 min

    Salut Thibaut, merci pour ton commentaire.

    effectivement, la solution que tu proposes est celle que j’avais annoncé de base au client.

    Cependant, contractuellement, mon client a 20 min pour répondre aux mails qui tombent sur la boîte en question. Les 15 min du mode récupération de l’iPhone ne sont pas suffisantes…(là, où sur Mac on peut régler sur chaque minute) et sur ce serveur mail c’est de l’imap classique, pas de mode push comme sur un Exchange par exemple.

    Là, le client et ses associés reçoivent tous un iMessages et peuvent réagir en conséquence. 🙂

    Je suis d’accord, point négatif, le Mac doit resté allumé en permanence.
    Bonne soirée

blank

Michel · 11 août 2021 à 12 h 03 min

Bonjour Mathieu, Je viens de voir votre script qui m’intéresse beaucoup pour envoyer un sms par l’application Message.app. Cependant, la ligne « set targetBuddy to participant targetBuddyPhone of targetService » empêche le script de se compiler. Quand on l’enlève ça compile. Mais bien entendu cela ne doit pas fonctionner. Je suis en OS 10,11 El Capitan. Une idée ?

Laisser un commentaire

blank

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.