Controlar variables no definidas en AppleScript

Uno de los problemas de las variables globales o locales de AppleScript es controlar si la variable está definida o no. Veamos cómo podemos evitar errores de este tipo en AppleScript.

Ejemplo básico del problema

Imaginemos que tenemos una variable global llamada miVariable y queremos consultar si su valor es igual a 1. Tenemos el siguiente código:

global myVariable

if myVariable = 1 then
	display dialog "Vale 1"
end if

Si lo ejecutamos en el editor de AppleScript obtendremos el siguiente mensaje de error: Error de script La variable myVariable no está definida.

Controlando el error

Recordemos que en AppleScript para controlar errores tenemos la estructura Try/endTry.

Consultando la documentación técnica de AppleScript observamos que cuando el motor de ejecución de AppleScript encuentra una variable no definida se dispara el error número -2753.

Para controlar este error en concreto en AppleScript deberíamos codificar la siguiente estructura:

try
-- Código a ejecutar si todo va bien
on error number -2753
-- Código a ejecutar si la variable no está definida
end try

Con esta información podemos deducir que el código correcto para el ejemplo anterior sería algo como:

global myVariable

try
	if myVariable = 1 then
		display dialog "Vale 1"
	end if
on error number -2753
	display dialog "No vale 1"
end try

Crea un cronómetro de cuenta atrás en AppleScript

Crear  a mano un simple cronómetro para controlar que no se nos pase el tiempo delante de nuestro ordenador es algo sencillo con unos pocos conocimientos de AppleScript.

Con los artículos publicados en este sitio web tenemos la información suficiente para crear un script que nos pregunte cuántos segundos queremos para la cuenta atrás y que tras finalizar la cuenta atrás reproduzca un sonido.

El código sería el siguiente:

on playSound(soundFileName)
	do shell script "afplay /System/Library/Sounds/" & soundFileName
end playSound

on run
	set numberOfSeconds to text returned of (display dialog "Introduzca los segundos para la cuenta atrás" default answer "")
	delay numberOfSeconds
	playSound("Glass.aiff")
end run

Es un script sencillo que puede ser mejorado fácilmente incluyendo, por ejemplo, soporte para reconocer horas y minutos.

Cómo ejecutar un script de AppleScript desde Swift

Aunque lenguajes de programación como Swift, Objective-C o Java nos permiten crear aplicaciones para Mac potentes y rápidas a veces hay funciones que AppleScript si puede hacer y otros lenguajes para Mac no pueden.

Un ejemplo de algo que AppleScript puede hacer con facilidad es consultar el estado y modificar el comportamiento de otra aplicación. Esto se debe a que muchas aplicaciones de MacOS incluyen librerías y diccionarios de soporte de AppleScript para que el propio sistema operativo pueda entablar comunicaciones con las aplicaciones.

Dentro de una aplicación podemos mezclar lenguajes de programación para conseguir los beneficios de todos ellos. Por ejemplo, crear un script en Swift que ejecute un script de AppleScript para manipular una aplicación.

Continuar leyendo «Cómo ejecutar un script de AppleScript desde Swift»