2 votos

El servicio de Applescript falla por falta de restricciones

Escribí un servicio de Automator que ejecuta un pequeño applescript para ajustar el volumen y reproducir un sonido.

Para activar el servicio, lo copié en /Library/Services e hizo un chmod +x . Para registrar un atajo de teclado para el servicio, ejecuté defaults write -g NSUserKeyEquivalents '{"HelloWorld" = "$@~1";}' donde HelloWorld es el nombre del servicio que se ve en el menú Servicios y $@~1 mi acceso directo (que se resuelve en +++1)

Después de reiniciar puedo ver el servicio en el menú con el acceso directo al lado. Cuando pulso la combinación de teclas deseada, aparece una alerta que me dice que el script ha encontrado un error. También aparece un error en el registro:

Se ha detectado que faltan restricciones para . No se puede colocar porque no hay suficientes restricciones para definir completamente el tamaño y el origen. Añada las restricciones que faltan, o establezca translatesAutoresizingMaskIntoConstraints=YES y las restricciones se generarán por usted. Si esta vista se diseña manualmente en MacOS 10.12 y posteriores, puede optar por no llamar a [super layout] desde su anulación. Establezca un breakpoint en DETECTED_MISSING_CONSTRAINTS para depurar. Este error sólo se registrará una vez.

Esto sugiere un error con alguna vista que no se inicializa correctamente, pero no estoy usando ninguna vista.

Este es el contenido del flujo de trabajo de Automator:

on run

    if (get output volume of (get volume settings)) < 50 then
        set volume output volume 50
    end if

    do shell script "afplay /Library/Application\ Support/HelloWorld/hello.mp3"

    return
end run

1voto

Lerk Puntos 131

Ya que se pidió en los comentarios (perdón por tardar tanto), aquí está una versión funcional del script. El truco es poner el nombre del archivo (que contiene espacios) entre comillas dobles, porque éstas pueden ser escapadas.

on run

    if (get output volume of (get volume settings)) < 50 then
        set volume output volume 50
    end if

    do shell script "afplay \"/Library/Application Support/HelloWorld/hello.mp3\""

    return
end run

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X