AppleScript se ejecuta en Automator, pero falla cuando se inicia mediante un acceso directo

2

Tengo el siguiente AppleScript en un servicio utilizando Ejecutar AppleScript en Automator:

on run {input, parameters}
    set date_ to short date string of (current date)
    tell application "System Events"
        keystroke date_
    end tell
end run

Está configurado para no recibir entrada en ninguna aplicación, y la salida reemplaza el texto. Si pongo el cursor en la ventana de edición en Automator y hago clic en el botón Ejecutar, funciona, y obtengo el resultado, por ejemplo:

...
end run8/15/18

Vinculé esto a un método abreviado de teclado (Propiedades del sistema - > Teclado - > Accesos directos - > selecciona mi script y vinculo una combinación de teclas). Sin embargo, cuando presiono la combinación de teclas, independientemente de la aplicación, obtengo brevemente (1-2 segundos) un pequeño engranaje giratorio en la barra de menú, y el siguiente error en la consola:

  

Se detectaron restricciones faltantes para < privado & gt ;. No se puede colocar porque no hay suficientes restricciones para definir completamente el tamaño y el origen. Agregue las restricciones que faltan o configure translatesAutoresizingMaskIntoConstraints = YES y las restricciones se generarán para usted. Si esta vista se presenta de forma manual en macOS 10.12 y posteriores, puede elegir no llamar [súper diseño] desde su anulación. Establezca un punto de interrupción en DETECTED_MISSING_CONSTRAINTS para depurar. Este error solo se registrará una vez.

La fecha no se agrega a ninguna aplicación donde hago esto. He visto a otra persona con un problema similar aquí ( enlace ) pero tampoco obtuvieron una respuesta. Esto es confuso, ya que parece estar relacionado con la representación de ventanas, pero no tengo elementos GUI en mi script, AFAIK.

Estoy corriendo:

Mac OS Sierra 10.12.6 (16G1510)
Automator Version 2.7 (428)

Ok, mientras buscaba esta publicación, encontré esta publicación ( enlace ) que afirma que hay un error que impide que los servicios del sistema se ejecuten después de Snow Leopard. ¿Alguien sabe una solución sin herramientas de terceros?

    
pregunta Andrew Pierson 16.08.2018 - 06:11

1 respuesta

1

Pude hacer que funcionara al guardar el AppleScript como una aplicación independiente, y luego crear un Servicio de Automatización que simplemente inicia esa aplicación. Aquí están los pasos:

  • Cree un nuevo AppleScript en el Editor de secuencias de comandos y pegue el siguiente código (el suyo, pero con una pequeña adición):

    on run
        set date_ to short date string of (current date)
        tell application "System Events"
            set visible of (first process where it is frontmost) to false -- return focus to initiating app
            delay 0.1 -- make sure the application has had time to regain focus—if the script doesn't work, try upping this value a little
            keystroke date_
        end tell
    end run
    
  • Guarde la secuencia de comandos como Application .

  • Crea un nuevo servicio en Automator y agrega una acción Launch Application . Configure la aplicación según la que acaba de guardar desde el Editor de secuencias de comandos.
  • Vincule un método abreviado de teclado a esa acción de Automator.

No puedo verificar que funcione en Sierra, pero está funcionando en High Sierra 10.13.6.

    
respondido por el aaplmath 22.08.2018 - 17:09

Lea otras preguntas en las etiquetas