21 votes

Comment ajouter des rappels via la ligne de commande ?

De temps en temps, il peut être utile d'ajouter quelques rappels à Reminders.app à partir de la ligne de commande, notamment 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é a) pour des raisons de performances (probablement stupides) et b) les solutions AppleScript me semblent souvent maladroites ou trop verbeuses.

2 votes

Pourquoi préférez-vous ne pas utiliser AppleScript ?

17voto

renfredxh Points 151

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 "remind" et lui donner des privilèges d'exécution (chmod 755 remind), vous pourriez faire ceci :

$ ./remind "Go to grocery store" 12/15/2013 10:00:00PM

0 votes

Cela fonctionne pour moi, mais comment puis-je ajouter une alarme. En d'autres termes, comment puis-je faire en sorte qu'elle apparaisse et me rappelle la date et l'heure du rappel ? En l'état actuel des choses, j'ai un rappel, mais je ne reçois pas de notification.

9voto

Fuzzy Purple Monkey Points 702
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 une action vide de type Nouvel élément de rappel, puis l'exécuter avec la commande suivante automator -i title test.workflow .

Voir aussi ce billet chez Mac OS X Hints .

0 votes

Merci pour votre réponse. Malheureusement, cela ne fonctionne ni dans un shell script ni dans l'éditeur script. Qu'est-ce qui me manque ?

1 votes

Soit ajouter #!/usr/bin/env bash comme première ligne et exécutez chmod +x /path/to/script ou exécuter bash /path/to/script.sh . Ou supprimez la première et la dernière ligne et enregistrez-la dans l'éditeur AppleScript.

1 votes

L'astuce de l'Automator a fait l'affaire ! Contrairement à la solution AppleScript, elle ne nécessite pas le lancement de Reminders.app, ce qui est exactement ce que je voulais.

5voto

agarman Points 108

Voici la même fonctionnalité 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);
}

0 votes

Où puis-je trouver des documents sur les applications supportées et les méthodes ?

2voto

Kalpesh Gamit Points 121
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}

1 votes

Bonjour, merci ! Cela ne fonctionne que sur les systèmes où Anglais est le langage de l'interface utilisateur. Dans les autres langues, les noms des listes sont localisés, par exemple, "Reminders" devient "Erinnerungen" en allemand.

0 votes

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/alerte.

2voto

Brad Parks Points 1893

Ce projet github fonctionne très bien, et n'utilise pas AppleScript. C'est une application XCode compilée.

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

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X