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

18

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 tonto) yb) las soluciones de AppleScript a menudo me parecen torpes o demasiado detalladas.

myhd
fuente
2
¿Por qué prefieres no usar AppleScript?
Daniel

Respuestas:

9
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 vacía Nuevo elemento de recordatorio y luego ejecutarlo automator -i title test.workflow.

Ver también este post en Mac OS X Hints .

Lri
fuente
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?
myhd
1
Agregue #!/usr/bin/env bashcomo la 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 AppleScript Editor.
Lri
1
La sugerencia de Automator hizo el truco! A diferencia de la solución AppleScript, no necesita iniciar Reminders.app, que es exactamente lo que quería.
myhd
14

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

#!/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 nombrar este script "recordar" y darle privilegios de ejecución (chmod 755 recordar), podría hacer esto:

$ ./remind "Go to grocery store" 12/15/2013 10:00:00PM                              
renfredxh
fuente
Esto funciona para mí, pero ¿cómo puedo agregar una alarma? Así es como puedo hacer que aparezca realmente emergente y recordarme en la fecha y hora del recordatorio. Tal como están las cosas, tengo un recordatorio, pero no recibo una notificación.
GrouchyGaijin
2
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}
Kalpesh Gamit
fuente
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
myhd
Este ejemplo realmente ilustra el uso de la "fecha de recordatorio" en lugar de la "fecha de vencimiento" anterior. Y la "fecha para recordarme" es exactamente lo que uno quiere usar para obtener la alarma / alerta.
Grrrr
2

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);
}
Tony Lotts
fuente