No hubo ningún error fatal en el código que se muestra en el OP, sin embargo, la forma correcta de utilizar current date
, en este caso, es dejar que la aplicación actual lo haga, no Recordatorios, como en realidad se descompone pero se recupera, por lo tanto no es fatal No obstante, uno debería escribir código que no va a cometer errores innecesariamente. Por lo tanto, antes del tell application "Reminders"
bloque de código , establezca current date
en una variable y use la 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 Reminders, sin embargo, siguiendo lo que se expone en el Diccionario AppleScript de Reminders, las siguientes propiedades , no marcadas como r/o
, son las que se pueden cambiar mediante programación para el reminder
class .
name (texto): el nombre del recordatorio
id (texto, r / o): el identificador único del recordatorio
cuerpo (texto): las notas adjuntas al recordatorio
completado (booleano): ¿Se completó el recordatorio?
fecha de finalización (fecha): la fecha de finalización del recordatorio
contenedor (lista, r / o): el contenedor del recordatorio
< strong> 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 fecha (fecha): la fecha de recordatorio del recordatorio
prioridad (entero): la prioridad del recordatorio
Como prueba, creé un recordatorio llamado "Prueba" y configuré recordarme [√] casilla de verificación a fecha de ayer , para cumplir con el parámetro de búsqueda en el código más abajo.
Luego, en el Editor de secuencias de comandos, usé la siguiente línea de código para obtener sus propiedades .
tell application "Reminders" to get properties of reminder named "Test"
Devolvió:
-
{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"}
Luego, desmarque manualmente el recordarme [] casilla de verificación y ejecuté el código ... get properties ...
de nuevo.
Devolvió:
-
{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 diferencia principal entre los dos fue el primero y el último elementos en la lista , es decir, el due date
y el remind me date
, pasaron de due date:date "Saturday, September 10, 2016 2:00:00 PM"
a due date:missing value
con lo mismo para remind me date
, teniendo remind me date:missing value
también.
Así que probé el código a continuación usando ambas preferencias , due date
y remind me date
solo para ver si había alguna diferencia y no hubo, como eliminación uno quitó el otro.
El siguiente código eliminará tanto due date
como remind me date
de cualquier Recordatorio que sea anterior a current date
y que no haya sido marcado completed
, en la hora en que se ejecuta el código , ya que esto es lo que ocurre, al menos en las propiedades de un reminder
, en una de ellas se ha desactivado manualmente el recordarme [ ] 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 se puede escribir como se muestra a continuación. En realidad, esta es una mejor manera de escribirlo, ya que hace que se devuelva una lista más pequeña porque solo crea una lista de elementos ( reminders
) que aún no han ha sido marcado como completado . Como después de todo, los que ya están marcados como completado no activarán 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
Según su OP editado, si esto no hace lo que se necesita, entonces no sé qué más puedo ofrecer, ya que solo puedo trabajar dentro de las propiedades expuestas y editables.
Nota: no pude reproducir el recordatorio como se muestra en su edición, es decir, la línea que comienza con "vencimiento" directamente debajo de la [] En una ubicación casilla de verificación y encima de "repetir Ninguna ". Sin embargo, lo que ahora se ofrece como respuesta a "eliminar todas las alarmas de todos los recordatorios vencidos con AppleScript en OS X" imita la acción manual de desmarcar la casilla de verificación recordarme [] , que es lo que has pedido ahora a través de la edición realizada en el OP. Espero que esto resuelva tu problema.