Ce didacticiel AppleScript vous montrera comment configurer des groupes d'applications pouvant être lancés en même temps. En cours de route, nous apprendrons comment implémenter des listes, des gestionnaires, des instructions if et comment utiliser les résultats des actions d'un utilisateur..
L'idée de base ici est que vous avez probablement différents groupes d'applications que vous aimez avoir ouvertes pour différentes tâches, par exemple pour la conception Web ou l'écriture. Ce ne serait pas bien si vous pouviez facilement ouvrir toutes ces applications en même temps à mesure que vous abordez différentes parties de votre journée?
Nous pouvons accomplir cela assez facilement avec AppleScript. L'algorithme ne fait ici que quatre étapes:
Du point de vue de l'utilisateur, une liste de différents groupes d'applications apparaît à l'écran (travail, jeu, etc.). Vous choisirez le groupe que vous souhaitez lancer, cliquez sur "OK" et ils seront tous lancés pour vous. Plutôt cool
La première chose à faire est de créer nos différents groupes d'applications. Nous utiliserons trois groupes différents pour ce didacticiel: travail, loisirs et productivité, chacun contenant sa propre liste d'applications..
Dans Applescript, une liste ressemble beaucoup à une variable, mais elle contient plusieurs éléments distincts au lieu d'un seul. Une liste contenant les voyelles de l'alphabet anglais ressemblerait à ceci:
[applescript]
mettre voyellesList à "a", "e", "i", "o", "u", "y"
[/ applescript]
À partir de là, nous pouvons récupérer et utiliser des éléments de liste individuels. Par exemple, ce qui suit renvoie "e."
[applescript]
--Renvoie "e"
mettre voyellesList à "a", "e", "i", "o", "u", "y"
retourne l'élément 2 de la liste de voyelles
[/ applescript]
Notez que de nombreux langages de programmation sont "indexés à zéro" et que le premier élément d'un tableau ou d'une liste est en fait l'élément zéro. Ce n'est pas le cas avec AppleScript. Le premier élément de la liste est le premier élément..
Pour la première étape, nous allons créer un total de quatre listes différentes. Les trois premières contiennent les noms exacts des applications telles qu’elles apparaissent dans OS X et la dernière contient les trois catégories dans lesquelles nous avons divisé nos groupes d’applications: Travail, Jeu et Productivité..
[applescript]
--Définir des groupes
définir le groupe de travail sur "Mail", "Safari", "TextEdit"
définir playGroup sur "Safari", "App Store", "iTunes"
définissez le groupe de productivité sur "Notes", "Rappels", "Mail"
définir appGroups sur "Work", "Play", "Productivity"
[/ applescript]
Ici, la première ligne de code définit une variable contenant une liste de noms d'applications: Mail, Safari et TextEdit. Je répète ce processus deux fois plus pour les autres groupes.
La dernière ligne de code répète le même processus, mais cette fois remplit la liste avec trois noms de groupe essentiellement arbitraires que j'ai composés: Travail, Jeu et Productivité..
Le codage consiste à prendre de grandes quantités d’informations et à les placer dans des constructions faciles à gérer..
L’avantage de cette étape est que nous avons entassé un tonne d'informations dans quatre variables faciles à rappeler. Le codage consiste à prendre de grandes quantités d’informations et à les placer dans des constructions faciles à gérer. Nous verrons cela à une échelle encore plus grande dans l'étape suivante.
Pointe: J'ai utilisé toutes les applications par défaut pour mes groupes, mais si vous n'êtes pas sur Mountain Lion, vous n'aurez pas de notes et de rappels. Remplacez les applications de la liste par celles que vous avez réellement installées.
Après avoir configuré mes variables, j'aime passer aux gestionnaires qui doivent être construits..
Dans l'étape précédente, nous avons pris plusieurs éléments et les avons placés dans une liste pour être liés à une seule variable. Avec un gestionnaire, vous faites quelque chose de similaire et prenez une liste complète de commandes, d’actions, etc. et vous les attachez à une variable..
Comme pour les fonctions dans d'autres langues, les gestionnaires peuvent être configurés pour accepter une information lorsqu'ils sont appelés. Cette information sera ensuite "transmise" et utilisée dans tout le gestionnaire.
Comment pouvons-nous savoir quelles actions doivent être déclarées par elles-mêmes et lesquelles doivent être regroupées dans un gestionnaire? La règle à suivre est que si vous vous retrouvez à répéter plusieurs fois un bloc de code considérable, il est probablement temps de configurer un gestionnaire..
Si vous vous retrouvez à répéter plusieurs fois un morceau de code considérable, il est probablement temps de configurer un gestionnaire..
Plus tard dans notre script, nous aurons un besoin répété de lancer toutes les applications de la liste fournie. C'est l'endroit idéal pour implémenter un gestionnaire. La syntaxe pour configurer ceci ressemble à ceci:
[applescript]
sur appLauncher (selectedGroup)
fin appLauncher
[/ applescript]
Comme vous pouvez le constater, cela ressemble un peu à un bloc tell, sauf qu’il commence par le mot "on" pour indiquer qu’il s’agit d’un gestionnaire. Ici, "appLauncher" est simplement le nom que j'ai choisi pour mon gestionnaire. Comme pour les variables, gardez toujours ces informations simples et descriptives..
La partie suivante de cette ligne apparaît entre parenthèses: (selectedGroup). C’est là que nous transmettons une variable qui peut ensuite être consultée et traitée dans l’ensemble du gestionnaire. Dans notre cas, lorsque nous utiliserons ce gestionnaire ultérieurement, nous transmettrons l'une de nos trois listes de groupes d'applications.
Maintenant que nous avons un shell qui définit les limites du gestionnaire, nous pouvons le remplir avec des commandes.
[applescript]
--Gestionnaire de lanceur d'applications
sur appLauncher (selectedGroup)
répéter avec i de 1 à (nombre d'éléments dans le groupe sélectionné)
dire à l'application (élément i du groupe sélectionné)
Activer
fin dire
fin de répéter
fin appLauncher
[/ applescript]
Tout d'abord, j'établis une répétition qui parcourt chaque élément de la liste que nous transmettons, puis j'utilise chacun de ces éléments en tant que variable servant de nom d'application dans un bloc tell. Enfin, une simple commande "activer" lance les applications de la liste..
Maintenant que nos variables sont déclarées et notre gestionnaire configuré, il est temps de commencer à interagir avec l'utilisateur. Ce que nous cherchons à faire est de créer une fenêtre de dialogue contenant une liste d’options..
Cela ressemble à beaucoup de travail, mais en réalité, c'est très simple. Nous avons déjà configuré notre liste appGroups, nous avons maintenant besoin d'une courte ligne de code pour dire à AppleScript de présenter la liste..
[applescript]
--Laisser l'utilisateur sélectionner un groupe
paramétrez theSection pour choisir dans la liste appGroups avec le titre "Quel groupe d'applications?"
[/ applescript]
Ici, j'ai utilisé la commande "choisir dans une liste" pour afficher une boîte de dialogue standard intégrée et utiliser "titre" pour attribuer du texte en haut de la boîte de dialogue..
Notez que nous n'avons pas simplement dit à AppleScript de donner à l'utilisateur une liste. En fait, nous configurons tout le processus comme une variable avec la commande "set".
C'est une façon simple et rapide de créer un dialogue et d'obtenir le résultat en une seule étape. La boîte de dialogue s'ouvre, l'utilisateur choisit un groupe d'applications et le résultat est attribué à "la sélection" en tant que variable..
Maintenant vient la partie la plus délicate. L'utilisateur a vu et dialogué avec le dialogue et nous devons traiter le résultat. Pour ce faire, nous devons littéralement considérer tous les scénarios possibles et en rendre compte. Ne supposez jamais que les utilisateurs seront logiques ou compétents. Supposez au contraire qu’ils emprunteront toutes les routes possibles, en particulier celles susceptibles de provoquer une erreur..
Ne présumez jamais que les utilisateurs seront logiques ou compétents.
Le premier scénario que je voudrais expliquer est une annulation. La fenêtre s’ouvre, l’utilisateur change d’avis et appuie sur Annuler… maintenant?
Dans une étape précédente, nous avons jeté le résultat de la fenêtre dans la sélection. Si l'utilisateur annule, la valeur de cette variable sera définie sur "false". Cette connaissance rend le scénario facile à gérer avec une instruction if:
[applescript]
--Si l'utilisateur annule
si la sélection est fausse alors
numéro d'erreur -128
fin si
[/ applescript]
Alors qu'est-ce que c'est numéro d'erreur -128 affaires? AppleScript contient une liste complète d’erreurs possibles, chacune étant affectée d’un numéro unique. Il se trouve que "utilisateur annulé" est -128.
Nous ne faisons que rendre compte de ce qui s'est passé. Ainsi, si vous consultiez les résultats de notre script dans Script Editor, vous verriez que l'utilisateur a annulé l'opération. Au fur et à mesure que cette action se produit, le script se termine et disparaît de la vue de l'utilisateur, ce qui est exactement ce que nous souhaitons dans ce cas..
Maintenant vient la grande finition. Si l'utilisateur n'annule pas l'opération, il doit avoir sélectionné l'un de nos trois groupes. Notre travail consiste à découvrir lequel et à agir en conséquence.
Avant de nous lancer dans ces trois scénarios, nous devons traiter un peu notre variable. Lorsque l'utilisateur sélectionne un élément et clique sur "ok", nous assignons en fait une liste à theSelection (il ne contient qu'un seul élément, mais il s'agit néanmoins d'une liste).
Pour résoudre ce problème, remplacez simplement la variable comme suit.
[applescript]
--Si l'utilisateur annule
si la sélection est fausse alors
numéro d'erreur -128
autre
définir la sélection sur l'élément 1 de la sélection
fin si
[/ applescript]
Cela semble un peu bizarre, mais si vous ne le faites pas, le script affichera une erreur, alors assurez-vous de ne pas sauter cette étape.!
Maintenant que nous avons fait ce travail ménager, nous pouvons maintenant comparer le résultat de l’utilisateur avec les différentes possibilités. La première option est que l'utilisateur a choisi le groupe d'applications "Travail".
Dans ce cas, la variable "theSelection" devrait être égale au premier élément de notre liste "appGroups" (ils auront tous les deux une valeur "Work"). Mettons en place une autre déclaration if pour tester la vérité de l'égalité.
[applescript]
--Si l'utilisateur annule
si la sélection est fausse alors
numéro d'erreur -128
autre
définir la sélection sur l'élément 1 de la sélection
--Si selection est workGroup
si theSelection = (élément 1 de appGroups) alors
appLauncher (groupe de travail)
fin si
fin si
[/ applescript]
Comme vous pouvez le constater, si la déclaration s'avère vraie, nous allons alors exécuter notre gestionnaire avec "workGroup" passé en tant que liste avec laquelle nous souhaitons travailler..
À ce stade, notre gestionnaire compte le nombre d'éléments dans workGroup, puis répète un bloc tell avec une commande "activate" pour chacun de ces éléments. Mail, Safari et TextEdit seront alors lancés avec succès et le script se terminera..
En suivant ces mêmes étapes, nous pouvons terminer notre script en ajoutant deux instructions "else if" comparant theSelection aux deux autres éléments de appGroups et lancer notre gestionnaire avec la liste appropriée en tant.
Dans chaque cas, le gestionnaire passera en revue et lancera les applications du groupe sélectionné..
[applescript]
--Si l'utilisateur annule
si la sélection est fausse alors
numéro d'erreur -128
autre
définir la sélection sur l'élément 1 de la sélection
--Si selection est workGroup
si theSelection = (élément 1 de appGroups) alors
appLauncher (groupe de travail)
--Si selection est playGroup
sinon si theSelection = (élément 2 de appGroups) alors
appLauncher (playGroup)
--Si la sélection est productivitéGroupe
sinon si theSelection = (élément 3 de appGroups) alors
appLauncher (productivitéGroup)
autre
revenir
fin si
fin si
[/ applescript]
Conseil utilisateur avancé: C’est beaucoup d’affirmations à encaisser ensemble. Pouvez-vous réécrire ce code en utilisant une instruction de répétition similaire à celle utilisée au début?
Espérons que nous avons parcouru le sujet assez lentement pour que vous compreniez bien chaque élément du script. Voici un aperçu du script complet en un seul coup:
[applescript]
--Définir des groupes
définir le groupe de travail sur "Mail", "Safari", "TextEdit"
définir playGroup sur "Safari", "App Store", "iTunes"
définissez le groupe de productivité sur "Notes", "Rappels", "Mail"
définir appGroups sur "Work", "Play", "Productivity"
--Gestionnaire de lanceur d'applications
sur appLauncher (selectedGroup)
répéter avec i de 1 à (nombre d'éléments dans le groupe sélectionné)
dire à l'application (élément i du groupe sélectionné)
Activer
fin dire
fin de répéter
fin appLauncher
--Laisser l'utilisateur sélectionner un groupe
paramétrez theSection pour choisir dans la liste appGroups avec le titre "Quel groupe d'applications?"
--Si l'utilisateur annule
si la sélection est fausse alors
numéro d'erreur -128
autre
définir la sélection sur l'élément 1 de la sélection
--Si selection est workGroup
si theSelection = (élément 1 de appGroups) alors
appLauncher (groupe de travail)
--Si selection est playGroup
sinon si theSelection = (élément 2 de appGroups) alors
appLauncher (playGroup)
--Si la sélection est productivitéGroupe
sinon si theSelection = (élément 3 de appGroups) alors
appLauncher (productivitéGroup)
autre
revenir
fin si
fin si
[/ applescript]
Maintenant que vous avez le script complet, enregistrez-le en tant qu'application, attribuez-lui une icône fantaisie et jetez-le dans votre dock..
Si vous avez suivi ce didacticiel avec succès et avez compris toutes les étapes, félicitations! Vous êtes certainement un AppleScripter plus que compétent et il est temps de vous débrouiller tout seul et de créer de superbes scripts.
Laissez un commentaire ci-dessous et parlez-moi des scripts que vous avez construits pour votre Mac. De plus, si vous avez d'autres idées de scripts à couvrir, faites-le-moi savoir..