Raccourcis : des solutions pour les créer en JavaScript et en Swift

Nicolas Furno |

Raccourcis, l’app d’automatisation d’Apple fournie depuis iOS 12, est pensée pour fonctionner entièrement sur les appareils iOS. Les processus sont créés sur l’appareil en utilisant une interface graphique, et ils sont exécutés aussi depuis l’appareil. C’est une excellente approche pour la majorité des utilisateurs, mais elle atteint ses limites pour créer des raccourcis très complexes. Quand on atteint la centaine d’actions, l’interface devient une contrainte plutôt qu’une force, et revenir à des lignes de code peut alors se révéler plus simple.

Plusieurs projets développés en parallèle tentent de remplacer l’interface graphique de Raccourcis par une solution qui repose sur du code. Nous avions déjà évoqué python-shortcut il y a quelques mois, mais un autre projet est encore plus populaire et plus avancé : Shortcuts JS. Comme son nom le sous-entend, il repose cette fois sur JavaScript, le célèbre langage créé à l’origine pour enrichir les pages web.

Un raccourci codé avec Shortcut JS à gauche, la version finale à droite.

Cette fois, on écrit un raccourci en utilisant du JavaScript directement, et non pas en listant des actions comme python-shortcuts le propose. Chaque approche a ses avantages et inconvénients, Shortcuts JS pourra intéresser les développeurs qui connaissent déjà le langage, même si sa syntaxe est souvent spécifique à Raccourcis. En contrepartie, il est actuellement impossible d’utiliser cette méthode sur un appareil iOS, puisqu’il est nécessaire d’installer Node.js1. Les instructions complètes sont disponibles à cette adresse.

Si vous voulez créer ou modifier un raccourci depuis un iPad, il existe aussi une solution. Shortcuts Swift est basé sur Shortcuts JS, mais adapté à Swift, le langage de programmation d’Apple. Au-delà des différences syntaxiques, le plus gros intérêt de la transition est d’offrir une solution entièrement mobile, puisque l’on peut créer un raccourci en utilisant Swift Playgrounds.

Modification d’un raccourci codé en Swift, en utilisant Swift Playgrounds sur un iPad.

Quelle que soit la solution suivie, le problème pour le moment, c’est que le nombre d’actions de Raccourcis prises en charge est encore limité. Shortcut JS est le plus avancé de tous, avec 116 actions prises en charge. C’est bien, mais il en manque environ 200 pour couvrir tous les besoins. La liste de ce qui est géré est disponible ici, et puisque le projet est open-source, n’importe qui peut contribuer pour prendre en charge davantage d’actions. Les explications sur la méthode à suivre sont détaillées sur cette page.


  1. Pour être tout à fait complet, il est possible de copier/coller le code JavaScript et générer un raccourci depuis la page officielle du projet. ↩︎

avatar iPop | 

Pour éviter que les raccourcis soient trop long, on peut les séparer en petits groupes puis créer un raccourci qui les regroupe.

avatar Nicolas Furno | 

@iPop

C'est vrai, mais je trouve que c'est vite compliqué aussi. La faute à l'app Raccourcis qui ne permet pas vraiment d'organiser les raccourcis, on se retrouve vite avec des dizaines et des dizaines de morceaux indispensables à certains raccourcis, mais inutiles seuls…

avatar jacques_dh | 

@nicolasf

@nicolasf: Votre livre sur Raccourcis, ... je m’en réjouis! Il mûrit?

avatar Nicolas Furno | 

@jacques_dh

Il grandit encore, on verra ensuite pour la phase de mûrissement… ?

Mais oui, ça avance. Je suis en train d’écrire un chapitre sur les conditions et l’action Si, pour tout vous dire.

avatar iPop | 

@nicolasf

Et bien, on va attendre d’impatience...comme un bon cru.

avatar sekaijin | 

===> le célèbre langage créé à l’origine pour enrichir les pages web.
Heu non Javascript à été créé pour scripter le serveur HTTP de Netscape.

sont arrivée dans le navigateur est un portage à posteriori.
Et il convient ici de parler d'ECMAScript et non de javascript.

JavaScript est l'usage fait de ECMASCript (le langage) dans le navigateur pour manipuler le DOM et le navigateur lui-même.

C'est une solution qui revient régulièrement.
Il y a eut par le passé un module pour MACOS qui permettait d'utiliser EcmaScript pour scripter MACOS.

La structure même du noyau JS est fait pour s'intégrer à un hôte qui fournis des fonctions avancés. C'est de cette façon que l'on a l'objet document ou window dans le navigateur.

Il est assez facile de prendre le moteur d'apple ou V8 de google pour l'intégrer à sa propre application.

Si le mapping d'objet/fonction entre l'hôte et ecmascript est facile à réalisé (le moteur à été créé pour ça) en faire un langage de script universel à la plateforme est plus complexe. ce mapping est normalement défini à la compilation. là il faut le rendre dynamique (fonction des applications installées).

A+JYT

avatar matthieumalyga | 

Merci pour cet article !

Ça me donne de collaborer aux projets Shortcuts JS ou Shortcuts Swift. Ce serait une première participation dans un projet open source mais ça semble être une excellente école pour démarrer.

Tu évoques les différences syntaxiques entre les 2 langages Swift et JavaScript. Sache qu'elles ne sont pas si grandes que ça. Swift et JavaScript se ressemblent en fait comme 2 gouttes d'eau.

J'ai d'ailleurs écrit un article là-dessus :

https://www.matthieumalyga.com/tag/comparaison-swift-javascript/

CONNEXION UTILISATEUR