¿Cómo puedo agregar recordatorios a través de la línea de comando?

De vez en cuando puede ser útil agregar algunos recordatorios a Reminders.app desde la línea de comandos, especialmente porque están sincronizados con iCloud. ¿Hay alguna manera de hacerlo?

Se prefiere una solución que no dependa de AppleScript : a) por razones de rendimiento (probablemente una tontería) yb) las soluciones de AppleScript a menudo me parecen torpes o demasiado detalladas.

¿Por qué prefiere no usar AppleScript?

Respuestas (5)

osascript - title <<END
on run a
tell app "Reminders"
tell list "Reminders" of default account
make new reminder with properties {name:item 1 of a}
end
end
end
END

También puede crear un flujo de trabajo de Automator con solo una acción de Nuevo elemento de recordatorios vacío y luego ejecutarlo con automator -i title test.workflow.

Consulte también esta publicación en Mac OS X Sugerencias .

Gracias por su respuesta. Desafortunadamente, esto no se ejecuta ni en un script de shell ni en el Editor de scripts. ¿Qué me estoy perdiendo?
Agregue #!/usr/bin/env bashcomo primera línea y ejecute chmod +x /path/to/script, o ejecute bash /path/to/script.sh. O elimine la primera y la última línea y guárdelo Editor AppleScript.
¡La sugerencia de Automator funcionó! A diferencia de la solución AppleScript, no es necesario iniciar Reminders.app, que es exactamente lo que quería.
¿Dónde puedo encontrar algunos documentos sobre las aplicaciones compatibles y qué puedo hacer tellcon ellas?

Aquí hay otra versión que le permite establecer el título, la fecha y la hora de finalización a través de argumentos de línea de comando.

#!/usr/bin/env bash                                                                                                               
# Make a new reminder via terminal script                                                                                         
# args: remind <title> <date> <time>                                                                                                                                                                                 

osascript - "$1" "$2" "$3" <<END                                                                                                        
on run argv                                                                                                                       
    set stringedAll to date (item 2 of argv & " " & item 3 of argv)                                                               
    tell application "Reminders"                                                                                                  
        make new reminder with properties {name:item 1 of argv, due date:stringedAll}                                             
    end tell                                                                                                                      
end run                                                                                                                           
END    

Entonces, si tuviera que llamar a este script "recordar" y darle privilegios de ejecución (recordar chmod 755), podría hacer esto:

$ ./remind "Go to grocery store" 12/15/2013 10:00:00PM                              
Esto funciona para mí, pero ¿cómo puedo agregar una alarma? Así es como puedo hacer que aparezca y me recuerde en la fecha y hora del recordatorio. Tal como está, tengo un recordatorio, pero no recibo una notificación.

Aquí está la misma funcionalidad que el AppleScript anterior; pero en JXA con ES6.

#!/usr/bin/env osascript -l JavaScript

const RemindersApp = Application('Reminders');

function run(argv) {
    [name, date, time] = argv;
    dueDate = new Date(date + " " + time);
    reminder = RemindersApp.Reminder({name: name, dueDate: dueDate});
    RemindersApp.defaultList.reminders.push(reminder);
}
¿Dónde puedo encontrar algunos documentos sobre las aplicaciones compatibles y los métodos?
tell application "Reminders"
    activate
    show list "Reminders"
end tell
set stringedDate to "12/11/2015"
set stringedHour to "10:00:00PM"
set stringedAll to date (stringedDate & " " & stringedHour)
tell application "Reminders" to tell list "Reminders" of default account to make new reminder with properties {name:"this is just test remainder", remind me date:stringedAll, due date:stringedAll, priority:1}
¡Hola Gracias! Esto solo funciona en sistemas donde el inglés es el idioma de la interfaz de usuario. En otros idiomas, los nombres de las listas están localizados, por ejemplo, "Recordatorios" se convierte en "Erinnerungen" en alemán.
Este ejemplo en realidad ilustra el uso de la "fecha de recordatorio" en lugar de la "fecha de vencimiento" anterior. Y el "recuérdame la fecha" es exactamente lo que uno quiere usar para obtener la alarma/alerta.

Este proyecto de github funciona muy bien y no usa AppleScript. Es una aplicación XCode compilada.

https://github.com/keith/reminders-cli