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.