Abrir y comprobar si una aplicación está abierta en MacOS con AppleScript

Con AppleScript podemos enviar y manipular aplicaciones para conseguir realizar tareas pero para que estas aplicaciones puedan realizar dichas tareas deben estar abiertas. Por esta razón, en muchas ocasiones, debemos asegurarnos dentro del código de nuestro script si la aplicación está abierta y de no ser así abrirla para poder operar con ella.

Preguntando si la aplicación está en ejecución

Ya vimos en el artículo estructuras condicionales en AppleScript cómo crear una estructura condicional para hacer preguntas con nuestro script.

Con una sentencia if then podemos preguntar a una aplicación si está activa o no. Por ejemplo, el siguiente código pregunta si la aplicación Mensajes est´ activa:


if application "Messages" is running then
-- código a ejecutar cuando mensajes está abierto
end if

También podemos consultar si la aplicación no está disponible:


if application "Messages" is not running then
-- código a ejecutar cuando la aplicación no está disponible
end if

Abriendo la aplicación

En AppleScript con el comando tell podemos enviar diversos comandos a las aplicaciones. Uno de estos comandos es ordenarle que se abra. Por ejemplo, abramos la aplicación mensajes:


tell application "Messages" to activate

Con tell también podemos crear bloques de código para enviar una serie de comandos a una aplicación. Su sintáxis es la siguiente:


tell application "Nombre de aplicación
-- Código a ejecutar con la aplicación
end tell

En muchas ocasiones es recomendable incluir pausas (comando delay) entre una operación y otra que enviemos a una aplicación para darle tiempo a la aplicación a procesar el comando y obtener un resultado.

Cerrando la aplicación

También podemos ordenar a una aplicación que se cierre. El comando en lugar de activate es quit. El código es el siguiente:


tell application "Messages" to quit

Ejemplo completo

En un script real que quisiera utilizar la aplicación mensajes para algo la estructura del código debería seguir la siguiente lógica:

  • Si la aplicación no está activa
  • Entonces abre la aplicación
  • Opera con la aplicación mensajes con la tranquilidad de que se sabe que recibirá nuestros comandos porque sabemos que está abierta

Nuestro script final quedaría de la siguiente forma:


if application "Messages" is not running then
tell application "Messages" to activate
end if

Esta práctica de seguridad es muy recomendable para asegurarnos de que nuestros scripts funcionan siempre como se espera.

Convertir un AppleScript en una aplicación para MacOS

AppleScript permite a cualquier usuario de MacOS realizar pequeñas utilidades de forma rápida y sencilla pero el resultado sigue siendo un script que requiere de una aplicación para ser ejecutado. Pero esto no es del todo cierto

El Editor de scripts que ofrece Apple nos permite convertir un script de AppleScript en una aplicación para MacOS.

Un pequeño ejemplo para empezar

Para continuar vamos a partir de un pequeño ejemplo de script que sólo mostrará una alerta por pantalla. El código es el siguiente:


on run
display alert "Esto es un mensaje de prueba."
end run

Una vez escrito nuestro script y tras haberlo guardado con un nombre apropiado es el momento de convertirlo en aplicación.

Exportando un AppleScript como aplicación

En el menú Archivo de la barra de menú del Editor de scripts encontramos la opción de Exportar ….

Al activar la opción de Exportar … aparecerá un cuadro de diálogo para exportar nuestro script. Nos solicitará un nombre, una carpeta de destino y un formato. Ese campo formato es el que nos interesa.

Como formato podremos exportar a script, paquete de scripts, texto y aplicación. Es el formato aplicación el que nos interesa.

Dependiendo de la versión de MacOS que estemos ejecutando el campo formato también estará disponible en el cuadro de diálogo para guardar nuestro script.

Cómo reproducir un sonido en AppleScript utilizando comandos de Terminal

Con AppleScript, al igual que vimos en el artículo de Cómo reproducir un sonido al iniciar sesión en OSX podemos ejecutar comandos del terminal de forma sencilla para realizar operaciones.

En este artículo vamos a seguir con el ejemplo que seguimos con Automator y vamos a reproducir un sonido utilizando el comando de terminal afplay.

En AppleScript para ejecutar una orden en el terminal debemos utilizar la orden do shell script seguida de una cadena de texto entre dobles comillas (").

En AppleScript el ejemplo que hicimos con Automator quedaría así:


on run
do shell script "afplay /System/Library/Sounds/Blow.aiff"

A diferencia de Automator en este caso conseguimos el mismo efecto de forma más sencilla y con menos trabajo. Pero AppleScript no es siempre más sencillo de utilizar que Automator. Es más, desde Automator podemos ejecutar diversos scripts de AppleScript para realizar flujos de trabajo más complejos. Debemos decidir en cada caso qué opción es la más apropiada dependiendo qué función queremos crear.

Comentarios en AppleScript

La mayoría de lenguajes de programación incluyen algún mecanismo para que el programador pueda incluir anotaciones o comentarios en el código. Esto es necesario sobre todo si ese código va a crecer mucho, se va a compartir con otros programadores o se va a trabajar de nuevo en él tras cierto tiempo y tenemos que recordar qué hacía el código y por qué decidimos hacerlo así.

Ya vimos en el artículo de Hola mundo en AppleScript al detalle que AppleScript permite incluir comentarios. En este artículo lo veremos más en detalle.

En AppleScript podemos crear un comentario de una sola línea o un comentario que agrupe un conjunto de líneas consecutivas.

Para escribir un comentario de una sola línea debemos emplear el prefijo doble guión (--) delante del comentario. Todo lo que haya a la derecha de -- se ignorará por el intérprete de AppleScript.

Para escribir un bloque de comentario en AppleScript debemos encerrar el bloque de comentario con los símbolos abre paréntesis y asterisco ((*) y cierra paréntesis y asterisco (*)). Todo lo que esté entre (* y *) se ignorará por el intérprete de AppleScript.

Ejemplo de comentarios

En el siguiente ejemplo veremos los dos tipos de comentarios que podemos realizar dentro de un script de AppleScript.


(*
AppleScript de ejemplo
(CopyLeft) Tyflos Accessible Software 2018.

Este AppleScript no hace nada importante y es una excusa para enseñar cómo funcionan los comentarios en este lenguaje de scripting.

*)

on run
-- Comienzo del script
say "Hola a todos"
-- Una pequeña pausa y nos despedimos
delay 2
say "Esto no hace nada más"
-- Fin del script""
end run

Conoce el estado de tu batería en MacOS Sierra gracias a AppleScript

Con las últimas versiones de MacOS Sierra, el sistema operativo de Apple para sus ordenadores portátiles y de sobremesa, los usuarios han encontrado que el indicador de batería es confuso y ofrece información insuficiente.

Muchos usuarios no encuentran una solución para volver a obtener toda la información de sus baterías y desconocen que el propio sistema operativo les ofrece una solución utilizando una de las herramientas del sistema MacOS que lo convierten en uno de los sistemas ooperativos más versátiles del mercado, nos referimos a Apple script

Aprender Apple script no es demasiado complicado pero puede que no tengas tiempo para ello. Por esa razón Tyflos Accessible Software ha desarrollado un script que verbaliza bien con la voz del sistema o la voz de VoiceOver, el lector de pantallas para MacOS, el estado actual de la batería de tu equipo Apple.

Puedes descargar el archivo comprimido del
script para conocer el estado de la batería(Español)
e instalarlo en tu sistema MacOS.

Una vez descomprimido el archivo copia el fichero appleScript en la carpeta para scripts de tu carpeta biblioteca de usuario. Una vez allí puedes crear un flujo de Automator para que se ejecute con una pulsación de teclas.

Si eres usuario de VoiceOver es más sencillo de utilizar. Descomprime el archivo dentro de la carpeta de scripts de tu biblioteca, es necesario activar el soporte de scripts de VoiceOver y añadir un comando para VoiceOver asociado a este script. Para ello, dentro de las opciones de VoiceOver, encontrarás el mecanismo para asociar un atajo de teclado a un comando de VoiceOver en la categoría comandos de la ventana de configuración de VoiceOver.

Cambiar rápidamente de idioma para el dictado en OSX

La nueva función de dictado para OSX permite al usuario dictar textos en más de 20 idiomas. Su uso es muy sencillo al igual que su configuración.

El problema aparece cuando el usuario quiere dictar en más de un sólo idioma. Aunque el cambio de idioma es sencillo puede resultar engorroso y lento y lo digo por experiencia. Durante un día normal de uso de este servicio puedo cambiar esta configuración unas 8 veces.

Para facilitar la operación de cambio de idioma he realizado un script de AppleScript que nos permite conmutar el idioma de dictado entre español de España e inglés de Estados unidos.

Este script, junto a la posibilidad de ejecución de scripts por atajos de teclado de VoiceOver, habilitan un cambio rápido de este servicio para adaptarse a nuestras necesidades en todo momento.

Puedes descargar el script de cambio de idioma e instalarlo en tu sistema OSX Mountain Lion.

Requisitos del script

Para un correcto funcionamiento del script es necesario cumplir los siguientes requisitos:

  • Utilizar OSX Mountain Lion 10.8.2 o superior
  • Tener instaladas las voces de Alex y Diego en el sistema. Estas voces se utilizan para la notificación de cambio de idioma.
  • Utilizar OSX en español. El script no funcionará de forma apropiada en un entorno OSX configurado para otro idioma.
  • El script sólo cambia entre español de España e inglés de Estados unidos. Para modificar estos valores es necesario modificar el código fuente del script.
  • Este script se distribuye de forma gratuita. Si vas a modificarlo o distribuirlo respeta su autoría y recuerda mencionar la fuente original de donde lo obtuviste.