Comment ajouter des rappels via la ligne de commande?

18

De temps en temps, il peut être utile d'ajouter des rappels à Reminders.app à partir de la ligne de commande - en particulier parce qu'ils sont synchronisés avec iCloud. Existe-t-il un moyen de le faire?

Une solution qui ne repose pas sur AppleScript est préférée : a) pour des raisons de performances (probablement idiotes) et b) les solutions AppleScript me semblent souvent maladroites ou trop verbeuses.

myhd
la source
2
Pourquoi préférez-vous ne pas utiliser AppleScript?
Daniel

Réponses:

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

Vous pouvez également créer un flux de travail Automator avec simplement une action Nouvel élément de rappel vide, puis l'exécuter avec automator -i title test.workflow.

Voir aussi ce post sur Mac OS X Hints .

Lri
la source
Merci pour votre réponse. Malheureusement, cela ne s'exécute ni dans un script shell ni dans l'éditeur de script. Qu'est-ce que je rate?
myhd
1
Soit ajouter #!/usr/bin/env bashcomme première ligne et exécuter chmod +x /path/to/script, soit exécuter bash /path/to/script.sh. Ou supprimez les première et dernière lignes et enregistrez-le AppleScript Editor.
Lri
1
L'indice Automator a fait l'affaire! Contrairement à la solution AppleScript, il n'est pas nécessaire de lancer Reminders.app, ce qui est exactement ce que je voulais.
myhd
14

Voici une autre version qui vous permet de définir le titre, la date et l'heure de fin via des arguments de ligne de commande.

#!/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    

Donc, si vous deviez nommer ce script "rappeler" et lui donner des privilèges d'exécution (rappel chmod 755), vous pourriez le faire:

$ ./remind "Go to grocery store" 12/15/2013 10:00:00PM                              
renfredxh
la source
Cela fonctionne pour moi, mais comment puis-je ajouter une alarme. Voilà comment puis-je faire en sorte qu'il s'affiche réellement et me rappeler la date et l'heure du rappel? En l'état, j'ai un rappel, mais je ne reçois pas de notification.
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
la source
1
Salut merci! Cela ne fonctionne que sur les systèmes où l' anglais est la langue de l'interface utilisateur. Dans d'autres langues, les noms de liste sont localisés, par exemple "Rappels" devient "Erinnerungen" en allemand
myhd
Cet exemple illustre en fait l'utilisation de la «date de rappel» par opposition à la «date d'échéance» ci-dessus. Et la "date de rappel" est exactement ce que l'on veut utiliser pour obtenir l'alarme / l'alerte.
Grrrr
2

Voici les mêmes fonctionnalités que l'AppleScript ci-dessus; mais en JXA avec 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
la source