0 votos

No se puede escribir texto en Notes.app usando AppleScript

Estoy tratando de escribir en Notes.app usando AppleScript y System Events. Tengo el siguiente script simple:

on test(notesAccount, notesFolder, notesName)

    tell application "Notes"
        activate
        delay 1.0
        tell account notesAccount
            delay 1.0
            make new note at folder notesFolder with properties {name:notesName}
            delay 1.0
            tell application "System Events"
                delay 1.0
                tell process "Notes"
                    delay 1.0
                    keystroke "Hello World"
                end tell
            end tell
        end tell
    end tell

end test

test("iCloud", "Notes", "Test")

Cuando ejecuto este script, la nota se crea con el nombre apropiado, pero no se inserta ningún texto. Recibo un sonido de "beep", presumiblemente, como indicación de un error. Actualmente estoy utilizando Sequoia 15.1. La accesibilidad está habilitada para el Editor de Scripts.

Me doy cuenta de que hay métodos alternativos para escribir texto en una nota. Sin embargo, por otras razones, necesito usar System Events.

Cualquier ayuda será muy apreciada.

ACTUALIZACIÓN:

No pude hacer que el método "key code" (ver respuesta a continuación) funcionara. ¡Sin embargo, pude hacer que el "Abrir nota en nueva ventana" funcionara! Aquí hay una solución que funciona basada en la respuesta de red_menace:

    on test(notesAccount, notesFolder, notesName)

    tell application "Notes"
        activate
        delay 1.0
        tell account notesAccount
            delay 1.0
            show (make new note at folder notesFolder with properties {name:notesName})
            delay 1.0
            tell application "System Events" to tell process "Notes"
                click menu item "Open Note in New Window" of menu 1 of menu bar item "Window" of menu bar 1
                delay 1.0
                keystroke "Hello World!"
                delay 1.0
                tell application "Notes" to if it is running then close its front window
            end tell
        end tell
    end tell

end test

test("iCloud", "Notes", "Test")

Hubiera preferido el método "key code" porque es visualmente más limpio, ¡pero esto funciona bien y estoy contento! ¡Gracias red_menace!

0voto

red_menace Puntos 111

Para la escritura de scripts de GUI, necesitarías seleccionar la nota real, no su entrada en la lista de carpetas. Notes no tiene un comando útil para eso, pero puedes mostrar la nota, luego hacer clic en el cuerpo de la nota, usar la navegación con flechas, o seleccionar el elemento de menú "Abrir nota en una nueva ventana".

El siguiente fragmento (probado en macOS 14 Sonoma) usa códigos de teclas para mover el punto de inserción al final de la nueva nota:

      show (make new note at folder notesFolder with properties {name:notesName}) -- selecciona la nota
      delay 0.25 -- ajustar según sea necesario
      tell application "System Events"
         key code {124, 125} usando {command down} -- derecha, flecha abajo para mover al final de la nota
         keystroke "Hola Mundo"
      end tell

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