Jak mogę dodać przypomnienia za pomocą wiersza poleceń?

18

Od czasu do czasu przydatne może być dodanie przypomnień do Reminders.app z wiersza poleceń - szczególnie dlatego, że są one zsynchronizowane z iCloud. Czy jest na to jakiś sposób?

Preferowane jest rozwiązanie, które nie opiera się na AppleScript : a) ze względów wydajnościowych (prawdopodobnie głupie) ib) rozwiązania AppleScript często wydają mi się niezdarne lub nadmiernie gadatliwe.

myhd
źródło
2
Dlaczego nie chcesz używać AppleScript?
Daniel

Odpowiedzi:

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

Możesz również utworzyć przepływ pracy Automatora za pomocą pustej akcji Nowy element przypomnienia, a następnie uruchomić go automator -i title test.workflow.

Zobacz także ten post w Mac OS X Hints .

Lri
źródło
Dziękuję za Twoją odpowiedź. Niestety nie działa to ani w skrypcie powłoki, ani w edytorze skryptów. czego mi brakuje?
myhd
1
Dodaj #!/usr/bin/env bashjako pierwszy wiersz i uruchom chmod +x /path/to/scriptlub uruchom bash /path/to/script.sh. Lub usuń pierwszy i ostatni wiersz i zapisz go w AppleScript Editor.
Lri
1
Wskazówka Automatora załatwiła sprawę! W przeciwieństwie do rozwiązania AppleScript nie trzeba uruchamiać Reminders.app, dokładnie tego chciałem.
myhd
14

Oto kolejna wersja, która pozwala ustawić tytuł, datę końcową i godzinę za pomocą argumentów wiersza poleceń.

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

Więc jeśli nazwiesz ten skrypt „przypomnij” i nadasz mu uprawnienia do wykonywania (chmod 755 przypomnij), możesz to zrobić:

$ ./remind "Go to grocery store" 12/15/2013 10:00:00PM                              
renfredxh
źródło
To działa dla mnie, ale jak mogę dodać alarm. W jaki sposób mogę sprawić, by faktycznie wyskakowało i przypomniało mi datę i godzinę przypomnienia? W tej chwili mam przypomnienie, ale nie otrzymuję powiadomienia.
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
źródło
1
Cześć, dzięki! Działa to tylko w systemach, w których angielski jest językiem interfejsu użytkownika. W innych językach lokalizowane są nazwy list, np. „Przypomnienia” stają się po niemiecku „Erinnerungen”
myhd
Ten przykład faktycznie ilustruje użycie „przypomnij mi datę” w przeciwieństwie do „terminu” powyżej. A „przypomnij mi datę” jest dokładnie tym, czego chce się użyć, aby uzyskać alarm / alert.
Grrrr
2

Oto ta sama funkcjonalność, co powyższy AppleScript; ale w JXA z 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
źródło