2 votos

¿Cómo puedo eliminar una nota de Notes.app utilizando AppleScript?

Me gustaría eliminar todas las notas de Notes.app que tengan más de dos semanas. Sin embargo, el siguiente código produce un error: "No se puede obtener el elemento [X] de cada nota":

tell application "Notes"
    set mainFolder to folder "Notes"
    set cutoffDate to (current date) - (14 * days)
    repeat with aNote in notes
        if container of aNote = mainFolder then
            if (creation date) of aNote is less than cutoffDate then
                delete aNote
            end if
        end if
    end repeat
end tell

He intentado mover la nota a la carpeta "Borrados recientemente", pero obtengo un error similar que indica que el script no puede "obtener" la nota. ¿Qué estoy haciendo mal?

0voto

Mockman Puntos 16

Tu sintaxis es un poco torpe. Si utilizaras esto, probablemente funcionaría. Dicho esto, es 'obtener' la lista de notas de cada ciclo. Esto no es intrínsecamente malo, pero no es bueno y podría modificar los resultados.

delete item 2 of (get notes)

Algunas cosas a tener en cuenta:

Intente utilizar una lista para representar el notes . Al eliminar notas, el contenido de notes por lo que los resultados deberían ser más predecibles cuando se trabaja a partir de una lista estática. Por ejemplo, esto también debería funcionar.

set nList to notes
delete item 2 of nList

En general, si puedes hacer cosas que no estén relacionadas con la aplicación en cuestión, intenta hacerlas fuera del bloque tell. En este caso, calcular una fecha no está relacionado, así que establécelo de antemano.

Dado que todas las notas a eliminar se encuentran dentro de la misma carpeta, realice un bucle a través de esa carpeta en lugar de a través de cada nota. Puede eliminar la sentencia if then relacionada.

Para ayudar a realizar un seguimiento de las notas eliminadas, he añadido 'xList' para registrar las que se eliminan. Cuando se ejecuta desde script Editor, la lista aparecerá en el Resultado. Si planea ejecutarlo de alguna otra manera, necesitaría proporcionar explícitamente los resultados (por ejemplo, mostrar un diálogo, guardar los nombres de los elementos en un archivo de texto). Por supuesto, todas las notas borradas deberían aparecer en la carpeta "borradas recientemente", pero también lo haría cualquier otra nota borrada recientemente que pudiera distorsionar su comprensión de lo que el script borró.

Esto debería lograr su propósito:

set cutoffDate to (current date) - (14 * days)
tell application "Notes"
    set mainFolder to folder "Notes"
    set nList to notes of mainFolder
    set xList to {}
    repeat with aNote in nList
        if (creation date) of aNote is less than cutoffDate then
            set end of xList to name of aNote
            delete aNote
        end if
    end repeat
    xList -- list of deleted notes
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