Este tutorial de AppleScript le mostrará cómo configurar grupos de aplicaciones que se pueden iniciar de una vez. A lo largo del camino, aprenderemos cómo implementar listas, controladores, instrucciones if y cómo trabajar con los resultados de las acciones de un usuario..
La idea básica aquí es que probablemente tenga diferentes grupos de aplicaciones que le gustaría tener abiertas para diferentes tareas, por ejemplo, para diseño web o escritura. ¿No sería agradable si pudieras abrir fácilmente todas estas aplicaciones a la vez a medida que avanzas en diferentes partes de tu día??
Podemos lograr esto con bastante facilidad con AppleScript. El algoritmo aquí solo tiene cuatro pasos de largo:
Desde la perspectiva de un usuario, verá una lista de diferentes grupos de aplicaciones emergente en la pantalla (trabajar, jugar, etc.). Elegirás el grupo que deseas lanzar, presionas "Aceptar" y todos se lanzarán por ti. Muy genial
Lo primero que debemos hacer es establecer nuestros diversos grupos de aplicaciones. Usaremos tres grupos diferentes para este tutorial: trabajo, juego y productividad, cada uno de los cuales contiene su propia lista de aplicaciones..
En Applescript, una lista es muy parecida a una variable, solo que contiene múltiples elementos distintos en lugar de uno solo. Una lista que contiene las vocales del alfabeto inglés se vería así:
[applecript]
establecer vocalesLista a "a", "e", "i", "o", "u", "y"
[/ applecript]
Desde aquí, podemos agarrar y trabajar con elementos de lista individuales. Por ejemplo, lo siguiente devuelve "e".
[applecript]
--Devuelve "e"
establecer vocalesLista a "a", "e", "i", "o", "u", "y"
devuelve el artículo 2 de las vocalesLista
[/ applecript]
Tenga en cuenta que muchos lenguajes de programación están "indexados a cero", por lo que el primer elemento de una matriz o lista es en realidad el elemento cero. Este no es el caso con AppleScript. El primer artículo en una lista es el artículo uno.
Para el primer paso, vamos a configurar un total de cuatro listas diferentes. Los tres primeros contendrán los nombres exactos de las aplicaciones tal como aparecen en OS X y los últimos contendrán las tres categorías en las que hemos dividido nuestros grupos de aplicaciones en: Trabajo, Juego y Productividad..
[applecript]
--Grupos establecidos
establezca el grupo de trabajo en "Correo", "Safari", "TextEdit"
configura playGroup en "Safari", "App Store", "iTunes"
establezca el grupo de productividad en "Notas", "Recordatorios", "Correo"
configura los Grupos de aplicaciones en "Trabajo", "Jugar", "Productividad"
[/ applecript]
Aquí, la primera línea de código configura una variable, que contiene una lista de nombres de aplicaciones: Mail, Safari y TextEdit. Repito este proceso dos veces más para los otros grupos..
La última línea de código repite el mismo proceso, pero esta vez llena la lista con tres nombres de grupos esencialmente arbitrarios que formé: Trabajo, Juego y Productividad.
La codificación consiste en tomar grandes cantidades de información y colocarla en construcciones fácilmente manejables.
El beneficio de este paso es que hemos atiborrado una tonelada de información en cuatro variables fácilmente recordadas. La codificación consiste en tomar grandes cantidades de información y colocarla en construcciones fácilmente manejables. Veremos esto en una escala aún mayor en el siguiente paso..
Propina: Utilicé todas las aplicaciones predeterminadas para mis grupos, pero si no estás en Mountain Lion, no tendrás Notes & Reminders. Cambie las aplicaciones en la lista a las que realmente ha instalado.
Después de configurar mis variables, me gusta pasar a cualquier controlador que deba ser construido.
En el paso anterior, tomamos varios elementos y los colocamos en una lista para vincularlos a una sola variable. Con un manejador, usted hace algo similar y toma una lista completa de comandos, acciones, etc. y los une a una variable..
Al igual que con las funciones en otros idiomas, los manejadores pueden configurarse para aceptar una parte de la información cuando se les llama. Esta información se "pasará" y se usará en todo el controlador..
¿Cómo podemos saber qué acciones deben declararse por sí mismas y cuáles deben estar envueltas en un controlador? La regla de oro para vivir es que si te encuentras repitiendo una porción considerable de código más de una vez, es probable que sea el momento de configurar un controlador..
Si te encuentras repitiendo una parte considerable del código más de una vez, es probable que sea el momento de configurar un controlador..
Más adelante en nuestro script, tendremos una necesidad repetida de lanzar todas las aplicaciones dentro de una lista provista. Este es el lugar perfecto para implementar un controlador. La sintaxis para configurar esto se ve así:
[applecript]
en appLauncher (selectedGroup)
final appLauncher
[/ applecript]
Como puede ver, es un poco como un bloque tell, solo comienza con la palabra "on" para indicar que se trata de un controlador. Aquí "appLauncher" es simplemente el nombre que he elegido para mi controlador. Al igual que con las variables, siempre mantén estas simples y descriptivas..
La siguiente parte de esta línea aparece entre paréntesis: (selectedGroup). Aquí es donde pasamos una variable a la que luego se puede acceder y procesar a través del controlador. En nuestro caso, cuando usemos este controlador más adelante, pasaremos a una de nuestras tres listas de grupos de aplicaciones.
Ahora que tenemos un shell que define los límites del controlador, podemos llenarlo con comandos.
[applecript]
--Manejador de aplicaciones de inicio
en appLauncher (selectedGroup)
repita con i desde 1 hasta (recuento de elementos en grupo seleccionado)
indicar aplicación (item i de selectedGroup)
activar
decirle al final
fin de repetición
final appLauncher
[/ applecript]
Primero, configuro una repetición que recorre cada elemento de la lista que pasamos, luego uso cada uno de estos elementos como variable para servir como nombre de la aplicación en un bloque de información. Finalmente, un simple comando "activar" lanza las aplicaciones en la lista.
Ahora que hemos declarado nuestras variables y configurado nuestro manejador, es hora de comenzar a interactuar con el usuario. Lo que estamos buscando hacer es crear una ventana de diálogo que contenga una lista de opciones.
Esto parece que será mucho trabajo, pero en realidad es super simple. Ya hemos configurado nuestra lista de Grupos de aplicaciones, ahora solo necesitamos una pequeña línea de código para decirle a AppleScript que presente la lista.
[applecript]
--Deja que el usuario seleccione un grupo
configura la selección para elegir de la lista de grupos de aplicaciones con el título "¿Qué grupo de aplicaciones?"
[/ applecript]
Aquí utilicé el comando "elegir de la lista" para abrir un cuadro de diálogo integrado estándar y utilicé el "título" para asignar algo de texto en la parte superior del cuadro de diálogo.
Tenga en cuenta que no nos limitamos a decirle a AppleScript que le dé al usuario una lista. En realidad configuramos todo el proceso como una variable con el comando "set".
Esta es una forma breve y dulce de crear un diálogo y obtener el resultado en un solo paso. Se abrirá el cuadro de diálogo, el usuario seleccionará un grupo de aplicaciones y el resultado se asignará a "theSelection" como variable.
Ahora viene la parte difícil. El usuario ha visto e interactuado con el diálogo y tenemos que procesar el resultado. Para hacer esto, literalmente tenemos que considerar cada escenario posible y tenerlo en cuenta. Nunca asuma que los usuarios serán lógicos o competentes. En su lugar, suponga que tomarán todas las rutas posibles, especialmente aquellas que pueden causar un error.
Nunca asumas que los usuarios serán lógicos o competentes.
El primer escenario que me gustaría tener en cuenta es una cancelación. La ventana aparece, el usuario cambia de opinión y presiona Cancelar ... ahora qué?
En un paso anterior, lanzamos el resultado de la ventana a la Selección. Si el usuario cancela, el valor de esta variable se establecerá en "falso". Este conocimiento hace que el escenario sea fácil de manejar con una sentencia if:
[applecript]
--Si el usuario cancela
si la selección es falsa entonces
número de error -128
terminara si
[/ applecript]
Entonces, ¿qué es esto? número de error -128 ¿negocio? AppleScript tiene una lista completa de posibles errores, a cada uno de los cuales se le asigna un número único. Da la casualidad de que "usuario cancelado" es -128.
Todo lo que estamos haciendo aquí es informar lo sucedido, de modo que si observa los resultados de nuestro script en el Editor de secuencias de comandos, verá que el usuario canceló la operación. A medida que ocurre esta acción, el script termina y desaparece de la vista del usuario, que es exactamente lo que queremos en este caso, por lo que esto es todo lo que vamos a hacer aquí..
Ahora viene el gran final. Si el usuario no cancela la operación, debe haber seleccionado uno de nuestros tres grupos. Nuestro trabajo es averiguar cuál y actuar en consecuencia..
Antes de lanzarnos a esos tres escenarios, tenemos que procesar nuestra variable un poco. Cuando el usuario selecciona un elemento y pulsa "ok", en realidad estamos asignando una lista a la Selección (solo tiene un elemento, pero no obstante es una lista).
Para solucionar esto, simplemente anule la variable de la siguiente manera.
[applecript]
--Si el usuario cancela
si la selección es falsa entonces
número de error -128
más
establezca la selección en el elemento 1 de la selección
terminara si
[/ applecript]
Esto parece un poco extraño, pero si no lo haces, el script generará un error, así que asegúrate de no saltear este paso.!
Ahora que hemos hecho ese trabajo doméstico, podemos proceder a comparar el resultado del usuario con las diversas posibilidades. La primera opción es que el usuario elija el grupo de aplicaciones "Trabajo".
En este caso, la variable "theSelection" debe ser igual al primer elemento en nuestra lista de "appGroups" (ambos tendrán un valor de "Trabajo"). Configuremos otra declaración if para probar la verdad de la igualdad..
[applecript]
--Si el usuario cancela
si la selección es falsa entonces
número de error -128
más
establezca la selección en el elemento 1 de la selección
--Si la selección es workGroup
si theSelection = (elemento 1 de appGroups) entonces
appLauncher (grupo de trabajo)
terminara si
terminara si
[/ applecript]
Como puede ver, si la afirmación es cierta, ejecutaremos nuestro controlador desde antes con "workGroup" pasado como la lista con la que queremos trabajar..
En este punto, nuestro manejador contará la cantidad de elementos en el grupo de trabajo y luego repetirá un bloque de información con un comando "activar" para cada uno de estos elementos. Esto hará que Mail, Safari y TextEdit se inicien con éxito y el script terminará.
Usando estos mismos pasos, podemos terminar nuestra secuencia de comandos agregando dos declaraciones "else if" que comparan la Selección con los otros dos elementos en los Grupos de aplicaciones e inicien nuestro controlador con la lista apropiada como entrada.
En cada caso, el controlador pasará y lanzará las aplicaciones desde el grupo seleccionado.
[applecript]
--Si el usuario cancela
si la selección es falsa entonces
número de error -128
más
establezca la selección en el elemento 1 de la selección
--Si la selección es workGroup
si theSelection = (elemento 1 de appGroups) entonces
appLauncher (grupo de trabajo)
--Si la selección es playGroup
otra cosa si theSelection = (elemento 2 de appGroups) entonces
appLauncher (playGroup)
--Si la selección es productividad, grupo.
de lo contrario, si theSelection = (elemento 3 de appGroups) entonces
appLauncher (ProductivityGroup)
más
regreso
terminara si
terminara si
[/ applecript]
Consejo de usuario avanzado: Esta es una gran cantidad de declaraciones para agrupar juntos. ¿Puede reescribir este código usando una instrucción de repetición similar a la que usamos al principio??
Con suerte, lo logramos lo suficiente como para que usted entienda completamente cada fragmento del guión. Aquí hay un vistazo al guión completo en una sola toma:
[applecript]
--Grupos establecidos
establezca el grupo de trabajo en "Correo", "Safari", "TextEdit"
configura playGroup en "Safari", "App Store", "iTunes"
establezca el grupo de productividad en "Notas", "Recordatorios", "Correo"
configura los Grupos de aplicaciones en "Trabajo", "Jugar", "Productividad"
--Manejador de aplicaciones de inicio
en appLauncher (selectedGroup)
repita con i desde 1 hasta (recuento de elementos en grupo seleccionado)
indicar aplicación (item i de selectedGroup)
activar
decirle al final
fin de repetición
final appLauncher
--Deja que el usuario seleccione un grupo
configura la selección para elegir de la lista de grupos de aplicaciones con el título "¿Qué grupo de aplicaciones?"
--Si el usuario cancela
si la selección es falsa entonces
número de error -128
más
establezca la selección en el elemento 1 de la selección
--Si la selección es workGroup
si theSelection = (elemento 1 de appGroups) entonces
appLauncher (grupo de trabajo)
--Si la selección es playGroup
otra cosa si theSelection = (elemento 2 de appGroups) entonces
appLauncher (playGroup)
--Si la selección es productividad, grupo.
de lo contrario, si theSelection = (elemento 3 de appGroups) entonces
appLauncher (ProductivityGroup)
más
regreso
terminara si
terminara si
[/ applecript]
Ahora que tienes el script completo, guárdalo como una aplicación, dale un icono elegante y tíralo en tu dock.
Si siguió con éxito este tutorial y comprendió todos los pasos, ¡felicitaciones! Definitivamente eres un AppleScripter más que competente y es hora de expandirte por tu cuenta y crear algunos scripts increíbles.
Deja un comentario a continuación y cuéntame sobre los scripts que has creado para tu Mac. Además, si tiene otras ideas para scripts que debería cubrir, hágamelo saber.