1 votos

eliminar todas las alarmas de todos los recordatorios atrasados con AppleScript en OS X

Quiero eliminar todas las alarmas / notificaciones (puede haber ninguna, una o más de una) de todos los recordatorios atrasados en la aplicación Recordatorios de OS X.

Intenté usar AppleScript para esto, pero tengo problemas para entender cómo trabajar correctamente con objetos . Sin embargo, he descubierto cómo conseguir todos esos recordatorios:

tell application "Reminders"
    activate
    set myRemList to every reminder whose due date is less than (current date) as list
    repeat with myitem in myRemList
        log (get properties of myitem)
    end repeat
end tell

¿Es este código utilizable (algún error fatal que desconozca)? ¿Cómo puedo eliminar las alarmas?

[Editar]

Este es un ejemplo de lo que quiero conseguir:

Considera este que me recuerda que debo llamar a Jon Doe:

enter image description here

El artículo vence hoy y se establece un recordatorio para notificarme a las 14.00 (2 pm). Cuando mi planificación ha cambiado hay pocos de esos elementos, apareciendo sus recordatorios ("llamar a jon doe" en este ejemplo). Quiero que la propiedad "recordarme" no esté marcada para todos los elementos atrasados.

3voto

user3439894 Puntos 5883

No hubo ningún error fatal en la código mostrado en el OP, sin embargo la forma correcta de usar current date En este caso, es dejando que lo haga la aplicación actual, no Recordatorios, ya que en realidad da error pero se recupera, por lo tanto no es fatal. No obstante, hay que escribir código que no va a dar errores innecesarios. Así que, antes de la tell application "Reminders" bloque de código , set current date a un variable y utilizar el variable dentro del Bloque de código de recordatorios como se muestra en el código más abajo.

Tenga en cuenta que yo personalmente no uso la aplicación Recordatorios, sin embargo, yendo a lo que se expone en el Diccionario AppleScript de Recordatorios, lo siguiente propiedades , no marcada como r/o son lo que se puede cambiar programáticamente para el reminder clase .

nombre (texto) : el nombre del recordatorio
id (texto, r/o) : el identificador único del recordatorio
cuerpo (texto) : las notas adjuntas al recordatorio
completado (booleano) : ¿Se ha completado el recordatorio?
fecha de finalización (fecha) : la fecha de finalización del recordatorio
contenedor (lista, r/o) : el contenedor del recordatorio
fecha de creación (fecha, r/o) : la fecha de creación del recordatorio
fecha de vencimiento (fecha) : la fecha de vencimiento del recordatorio
fecha de modificación (fecha, r/o) : la fecha de modificación del recordatorio
recordarme la fecha (fecha) : la fecha del recordatorio
prioridad (entero) : la prioridad del recordatorio

Como prueba, he creado un recordatorio llamado "Prueba" y he establecido el recuérdame [] casilla de verificación a fecha de ayer para que se ajuste a la parámetro de búsqueda en el código más abajo.

Luego, en script Editor, utilicé la siguiente línea de código para obtener su propiedades .

tell application "Reminders" to get properties of reminder named "Test"

Volvió:

  • {due date:date "Saturday, September 10, 2016 2:00:00 PM", modification date:date "Sunday, September 11, 2016 1:49:35 PM", class:reminder, body:missing value, completed:false, completion date:missing value, id:"3F0EF538-5DF6-4F1C-8024-922B5D45EB9B", name:"Test", container:list id "9EB58C9B-EF63-4B72-88C3-A4FFA3C7272F" of application "Reminders", priority:0, creation date:date "Sunday, September 11, 2016 1:49:13 PM", remind me date:date "Saturday, September 10, 2016 2:00:00 PM"}

A continuación, desmarqué manualmente el recuérdame [] casilla de verificación y ejecutó el ... get properties ... código de nuevo.

Volvió:

  • {due date:missing value, modification date:date "Sunday, September 11, 2016 1:49:35 PM", class:reminder, body:missing value, completed:false, completion date:missing value, id:"3F0EF538-5DF6-4F1C-8024-922B5D45EB9B", name:"Test", container:list id "9EB58C9B-EF63-4B72-88C3-A4FFA3C7272F" of application "Reminders", priority:0, creation date:date "Sunday, September 11, 2016 1:49:13 PM", remind me date:missing value}

La principal diferencia entre ambos fue la primera y la última artículos en el lista es decir, el due date y el remind me date , pasó de due date:date "Saturday, September 10, 2016 2:00:00 PM" a due date:missing value con lo mismo para remind me date , habiendo remind me date:missing value también.

Así que probé el código abajo usando ambos preferencias , due date y remind me date sólo para ver si había alguna diferencia y no la había, ya que al quitar uno se quitaba el otro.

Lo siguiente código eliminará tanto el due date y remind me date de cualquier Recordatorio que sea más antiguo que current date y no ha sido marcado completed En el momento en que el código se ejecuta, ya que esto es lo que ocurre, al menos al propiedades de un reminder , en uno se ha desmarcado manualmente el recuérdame [] casilla de verificación .

set curDate to current date

tell application "Reminders"
    activate
    set myRemList to every reminder whose due date is less than curDate as list
    repeat with myitem in myRemList
        if completed of myitem is false then
            delete remind me date of myitem
        end if
    end repeat
end tell

El código anterior también puede escribirse como se muestra a continuación. Esta es una mejor manera de escribirlo, ya que hace que el lista devuelto porque entonces sólo está creando una lista de artículos ( reminders ) que aún no han sido marcados como completado . Como después de todo, los que ya están marcados como completado no van a activar una "alarma".

set curDate to current date

tell application "Reminders"
    activate
    set myRemList to every reminder whose completed is false and due date is less than curDate as list
    repeat with myitem in myRemList
        delete remind me date of myitem
    end repeat
end tell

Basado en su OP editado, si esto no hace lo que se necesita, entonces no sé qué más puedo ofrecer, ya que sólo puedo trabajar dentro de lo que propiedades están expuestos y son editables.

Nota: No he podido reproducir el recordatorio tal y como se muestra en su edición, es decir, la línea que comienza con "due" directamente bajo el [] En un lugar casilla de verificación y por encima de "repetir Ninguno ". Sin embargo, lo que ahora se ofrece como respuesta a "eliminar todas las alarmas de todos los recordatorios atrasados con AppleScript en OS X" sí imita la acción manual de desmarcar el recuérdame [] casilla de verificación que es lo que ahora has pedido a través de la edición realizada en el OP. Espero que esto resuelva su problema.

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