Cómo recoger parámetros de la línea de comandos en un script de Swift

Como pudimos aprender en el artículo sobre Ejecutar scripts de Swift desde la terminal de MacOS podemos crear pequeños programas que realicen operaciones para nosotros.

En este artículo aprenderemos a recoger parámetros desde la línea de comandos para poder crear scripts más personalizables.

Continuar leyendo «Cómo recoger parámetros de la línea de comandos en un script de Swift»

Números aleatorios en AppleScript

A veces en nuestros scripts puede que nos interese tener un poco de azar para bien ofrecer diversión al usuario u optimizar un algoritmo.

AppleScript nos ofrece el comando random number para generar números aleatorios.

Su sintaxis es muy simple:


set azar to random number
set dado to random number from 1 to 6

Con esto es muy sencillo el poder crear, por ejemplo, un script para simular una tirada de un dado de 6 caras.


set dado to random number from 1 to 6
set dadoText to dado as text

display alert "En el dado ha salido el número " & dadoText

Controlar errores de ejecución en AppleScript

A la hora de diseñar y codificar nuestros scripts de AppleScript debemos tener en cuenta que se pueden producir errores y debemos controlar lo que sucede cuando aparecen estos errores.

Por defecto en AppleScript cuando sucede un error se para la ejecución del script y, a veces, se da un mensaje de error.

Veamos un ejemplo intentando verbalizar un mensaje con una voz no instalada en el sistema:


say "Hola a todos!" using "Manolo"

Al intentar ejecutar ese código obtendremos el mensaje de error No se ha encontrado la voz.. Debemos controlar esto para que nuestro script siga funcionando perfectamente.

Bloques seguros con try

AppleScript nos permite ejecutar un bloque de código de forma segura utilizando el bloque try. Permitiendo que se ejecute el código pero si aparece un error no se parará la ejecución de nuestro script.

El bloque try utiliza la siguiente sintaxis:


try
-- código a ejecutar de forma segura
end try

Volviendo a nuestro ejemplo anterior ahora podemos evitar que se de el mensaje de error utilizando el bloque try. El código quedaría así:


try
say "Hola a todos!" using "Manolo"
end try

Reaccionando a los errores

A veces nos interesa reaccionar ante la aparición de un error. Por ejemplo, si la voz Manolo no existe, aunque usemos el bloque try tendremos un problema en nuestro script ya que el mensaje nunca llegaá al usuario ya que el mensaje no se verbalizará. La solución pasa por reaccionar al error verbalizando el mensaje de todas formas con cualquier voz que esté disponible. Para ello el bloque try posee la cláusula on error que nos permite definir un sub bloque de código dentro del bloque try que se ejecutará sólo si se produce un error. Su sintaxis es la siguiente:


try
-- Código a ejecutar
on error
-- Código a ejecutar si se produce un error
end try

El código de nuestro ejemplo quedaría así:


try
say "Hola a todos!" using "Manolo"
on error
say "Hola a todos!"
end try

Creando nuestra función

El código necesario para verbalizar un mensaje con una voz en específico de forma segura es candidato a convertirse en una de nuestras funciones habituales. El código podría ser algo como lo siguiente:


on sayWithVoice(texto, nombreDeVoz)
try
say texto using nombreDeVoz
on error
say texto
end try
end sayWithVoice

Para probar nuestra función simplemente debemos llamarla de la siguiente forma:


sayWithVoice("Hola a todos, soy Mónica", "Monica")

Cómo saber si VoiceOver puede ser controlado con AppleScript desde un script de AppleScript

Una función muy necesaria para los scripts de AppleScript destinados a funcionar con VoiceOver, el lector de pantallas de Apple para sus productos, es saber si VoiceOver para MacOS tiene habilitada la opción de poder ser controlado por AppleScript ya que esto nos permitirá manipular el comportamiento de VoiceOver desde nuestros scripts de AppleScript.

Para ello lo que hacemos es comunicarnos con la aplicación VoiceOver y probamos a llamar a alguna de sus funciones internas.

El código de nuestra función sería el siguiente:


on isVoiceOverRunningWithAppleScript()
set isRunning to true
-- is AppleScript enabled on VoiceOver --
tell application "VoiceOver"
try
set x to bounds of vo cursor
on error
set isRunning to false
end try
end tell
return isRunning
end isVoiceOverRunningWithAppleScript

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.