Applescript no invocará el comando de acceso directo

0

Tengo un largo documento de TextEdit que abro con frecuencia (mediante una pulsación de tecla, gracias a Alfred). Contiene muchas ortografías no estándar, así que deselecciono "Revisar ortografía mientras se escribe" (aunque quiero que la ortografía esté predeterminada con otros documentos de TextEdit). Tenga en cuenta que he creado el acceso directo "Comando / Opción / Control - S" (en Prefs / Keyboard / Shortcuts) para alternar ese comando.

Para guardarme un paso, quiero crear un applecript para abrir el documento y activar ese comando. Pero simplemente no puedo hacer que funcione.

El documento se abre, pero "Revisar ortografía mientras se escribe" no se desactiva.

tell application "Finder"
activate
open document file "reference.rtf" of folder "Documents" of folder "MYSTUFF" of folder "Users" of startup disk
end tell

tell application "TextEdit" to activate
tell application "System Events"
keystroke "s" using {command down, option down, control down}
end tell

==============

EDITAR:

He insertado "Delay", pero eso no ayuda; las ortografías están resaltadas.

¿Es posible que Applescripts por alguna razón no pueda invocar accesos directos personalizados dentro de las aplicaciones (que se han manipulado mediante Prefs / Keyboard / Shortcuts)?

¿Hay otra forma de invocar el comando "Revisar ortografía al escribir"? No parece ser uno de los comandos de TextEdit.

    
pregunta Jimmbo 02.10.2015 - 22:29

3 respuestas

1

Sospecho que no aceptaba el atajo personalizado porque el atajo solo se usa en TextEdit, mientras que la secuencia de comandos lo enviaba a Eventos del sistema.

Si eso es cierto o no, la siguiente secuencia de comandos funciona. Elige el elemento del menú en lugar de activarlo mediante un acceso directo:

tell application "Finder"
activate
open document file "reference.rtf" of folder "Documents" of folder "MYSTUFF" of folder "Users" of startup disk
end tell
delay 1
activate application "TextEdit"
delay 1
tell application "System Events"
tell process "TextEdit"


click menu item "Check Spelling While Typing" of menu 1 of menu item "Spelling and Grammar" of menu 1 of menu bar item "Edit" of menu bar 1

end tell
end tell
    
respondido por el Jimmbo 04.10.2015 - 21:55
0

Nota agregada después de los comentarios ...
Puede que no sea la demora la que causa el problema; parece más probable que sea la dificultad para determinar el estado inicial del interruptor de comprobación automática.

Creo que el 'retraso' es su problema real, como mencionó Arthur, pero puede afinar ese script a 3 líneas, incluso agregando el retraso
Si está ejecutando desde HD en lugar de SSD, es posible que deba aumentar el valor de retardo a 2 o 3, solo para darle tiempo al documento para que se abra y amp; ven al frente.

tell application "Finder" to open file ((path to documents folder as text) & "reference.rtf")
delay 1
tell application "System Events" to keystroke "s" using {command down, option down, control down}

Supongo que la ruta de sus usuarios / mystuff / Documents es su carpeta regular ~ / Documents con el nombre de cuenta cambiado. Mi nueva versión no se basa en que su nombre de usuario esté en la secuencia de comandos, solo usará la carpeta ~ / Documentos del usuario actual

    
respondido por el Tetsujin 03.10.2015 - 10:05
0

Estoy agregando esto como una segunda respuesta, ya que creo que vale la pena mantener la investigación para llegar hasta aquí.

Usando una gran cantidad de Google-Fu & El asistente de UI de Apple, UIElementInspector, que obtuve a través de FDMlib (que se enlaza directamente con Apple para la descarga) me las arreglé para improvisar esto ...

tell application "Finder" to open file ((path to documents folder as text) & "reference.rtf")
delay 1

tell application "System Events" to tell process "TextEdit"
    set v to (value of attribute "AXMenuItemMarkChar" of menu item "Check Spelling While Typing" of menu 1 of menu item "Spelling and Grammar" of menu 1 of menu bar item "Edit" of menu bar 1)

    if v = "✓" then
        click menu item "Check Spelling While Typing" of menu 1 of menu item "Spelling and Grammar" of menu 1 of menu bar item "Edit" of menu bar 1
    end if
end tell

El 'set v to ...' es la parte que examina el estado de alternancia actual de ese elemento del menú. Es un poco áspero y amp; listo, pero funciona al verificar la marca de verificación real en el elemento del menú. Si no está marcado, no hace nada, si lo está, se entrega para que se apague.

Estoy seguro de que un guionista adecuado podría refinar esto de una docena de formas, pero funciona :-)

    
respondido por el Tetsujin 05.10.2015 - 14:10

Lea otras preguntas en las etiquetas