10 votos

¿Cómo puedo utilizar AppleScript para abrir una nota específica desde la aplicación Notas de Apple?

Me gustaría crear un AppleScript (o un comando desde Terminal) que abra una nota específica desde la aplicación Notes de Apple, preferiblemente en una ventana aparte . Para que quede claro, no quiero crear una nueva nota; quiero abrir una existente. ¿Hay alguna forma de hacerlo?

Una vez abierta la nota, una forma de abrirla en una ventana separada podría ser activando el atajo de teclado 1 que abrirá la nota en una ventana separada. ¿Puedo utilizar AppleScript para activar los atajos de teclado?

Tenga en cuenta que puede asignar atajos de teclado personalizados a cualquier elemento de la barra de menús de una aplicación (véase esta página de apple para más información). He asignado 1 a Window > Float Selected Note .

EDITAR : He descubierto cómo hacerlo con scripts de UI, pero tengo que esperar a que cada comando se ejecute individualmente, en lugar de que la nota se abra en una ventana separada inmediatamente. Todavía preferiría un método más rápido, así que considere que esta pregunta sigue sin respuesta y proporcione cualquier sugerencia que tenga.

En primer lugar, abre la nota y haz clic en el botón Añadir personas enter image description here y haga clic en el título de su nota. A continuación, haga clic en copy link . asegúrese de que el permiso se establece en Only people you invite can make changes . Por último, haga clic en Share . No te preocupes; a menos que empieces a añadir contactos, en realidad no has compartido la nota con nadie. Aunque tengan el enlace, otras personas no pueden acceder a ella a menos que hayan iniciado sesión en tu cuenta de iCloud.

A continuación, pega el siguiente código en el editor script y pega también tu enlace en la sección indicada a continuación

set Time0ut to 10
set Timestamp to current date
set debug to false

#####################################################

if application "Notes" is running then quit application "Notes"

repeat until application "Notes" is not running

    if application "Notes" is running then quit application "Notes"

    if application "Notes" is running then
        if debug is true then say "Failed to quit"
        delay 1
    end if

    if (((current date) - Timestamp))  Time0ut then
        if debug is true then say "Timeout"
        return
    end if

end repeat

open location "https://www.icloud.com/notes/0TD6aphsUjK8vBscC6QgzWgXQ#Clipboard"

repeat until application "Notes" is running
    if (((current date) - Timestamp))  Time0ut then
        if debug is true then say "Timeout"
        return
    end if
end repeat

#####################################################
#####################################################
#####################################################

###########################
repeat 3 times

    if application "Notes" is not running then return

    try
        tell application "Notes" to activate
        menu_click({"Notes", "Window", "Float Selected Note"})
    end try
    delay 0.5

    if application "Notes" is not running then return

    if index of window "Notes" of application "Notes" is not 1 then
        exit repeat
    else
        if application "Notes" is not running then return
        if debug is true then say "Float Error"
        delay 1
        if application "Notes" is not running then return
    end if
end repeat
###########################

###########################
repeat 3 times

    if application "Notes" is not running then return

    try
        tell application "Notes" to activate
        tell application "Notes" to close (every window whose name is "Notes")
    end try

    if application "Notes" is not running then return

    if visible of window "Notes" of application "Notes" is false then
        exit repeat
    else
        if application "Notes" is not running then return
        if debug is true then say "Close Error"
        delay 1
        if application "Notes" is not running then return
    end if

end repeat
###########################

###########################
repeat 3 times

    if application "Notes" is not running then return

    try
        tell application "Notes" to activate
        set bounds of ((every window whose name is not "Notes") of application "Notes") to {0, 23, 540, 323}
    end try

    if application "Notes" is not running then return

    if (bounds of front window of application "Notes") is equal to {0, 23, 540, 323} then
        exit repeat
    else
        if application "Notes" is not running then return
        if debug is true then say "Resize Error"
        delay 1
        if application "Notes" is not running then return
    end if

end repeat
###########################

#####################################################
#####################################################
#####################################################

on menu_click(mList)
    local appName, topMenu, r
    if mList's length < 3 then error "Menu list is not long enough"
    set {appName, topMenu} to (items 1 through 2 of mList)
    set r to (items 3 through (mList's length) of mList)
    tell application "System Events" to my menu_click_recurse(r, ((process appName)'s ¬
        (menu bar 1)'s (menu bar item topMenu)'s (menu topMenu)))
end menu_click
on menu_click_recurse(mList, parentObject)
    local f, r
    set f to item 1 of mList
    if mList's length > 1 then set r to (items 2 through (mList's length) of mList)
    tell application "System Events"
        if mList's length is 1 then
            click parentObject's menu item f
        else
            my menu_click_recurse(r, (parentObject's (menu item f)'s (menu f)))
        end if
    end tell
end menu_click_recurse

9voto

Anssssss Puntos 653

No puedo creer que haya tardado tanto en darme cuenta, pero hay una forma increíblemente sencilla de hacerlo:

tell application "Notes"
    tell account "iCloud"
        tell folder "Clipboard"
            show note 1
        end tell
    end tell
end tell

Las notas están indexadas según su última fecha de edición.

Así es como se abre una nota por el título

tell application "Notes"
    show note "awesome note"
end tell

Si tienes varias notas con el mismo título, especifica en qué carpeta está la nota:

tell application "Notes"
    tell folder "Code"
        show note "awesome note"
    end tell
end tell

Esto funciona incluso para las carpetas anidadas:

tell application "Notes"
    tell folder "Code"
        tell folder "Regex"
            show note "another note"
        end tell
    end tell
end tell

0voto

TrivisionZero Puntos 75

Espero que esto no sea indiscreto, pero sólo tienes que añadir 'id'. Esto funciona:

tell application "Notes"
    show note id "x-coredata://DCE76A8C-ADAC-48D5-9783-30CD1BE73A78/ICNote/p21884"
end tell

Curiosamente, me cuesta un poco volver a redactar esto con la sintaxis "cuyo". Esto NO funciona:

tell application "Notes"
    show every note whose cell "id" = "x-coredata://DCE76A8C-ADAC-48D5-9783-30CD1BE73A78/ICNote/p21884"
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