Як додати нагадування через командний рядок?


18

У той же час може бути корисно додати деякі нагадування для Reminders.app з командного рядка - особливо тому, що вони синхронізовані з iCloud. Чи є спосіб зробити це?

Рішення, яке не покладається на AppleScript, є кращим : а) з точки зору продуктивності (можливо, нерозумно) і b) рішення AppleScript часто відчувають себе незграбними або надто багатозначними.


2
Чому ви вважаєте за краще не використовувати AppleScript?
Daniel

Відповіді:


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

Ви також можете створити робочий процес Automator з порожньою дією нового нагадування, а потім запустити його за допомогою automator -i title test.workflow.

Дивіться також Ця посада в Mac OS X Підказки .


Спасибі за вашу відповідь. На жаль, це не виконується ні в сценарії оболонки, ні в Script Editor. Що мені не вистачає?
myhd

1
Або додайте #!/usr/bin/env bash як перший рядок і запустити chmod +x /path/to/scriptабо запустити bash /path/to/script.sh. Або видаліть перший і останній рядки та збережіть редактор AppleScript.
Lri

1
Натяк Automator зробив трюк! На відміну від рішення AppleScript, не потрібно запускати Reminders.app, що саме я хотів.
myhd

13

Ось ще одна версія, яка дозволяє встановлювати заголовок, дату і час завершення через аргументи командного рядка.

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

Отже, якщо ви називаєте цей скрипт "нагадувати" і надати йому виконавчі привілеї (chmod 755 нагадати), ви можете зробити це:

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

Це працює для мене, але як я можу додати сигнал тривоги. Саме так я можу зробити це фактично спливаючим і нагадувати мені на дату і час нагадування? Вона є нагадуванням, але не отримала сповіщення.
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}

1
Привіт, спасибі! Це працює тільки на системах, де Англійська є мовою інтерфейсу користувача. В інших мовах, імена списків локалізовані, напр. "Нагадування" стає "Erinnerungen" німецькою мовою
myhd

Цей приклад насправді ілюструє використання "нагадати мені дату", на відміну від "терміну" вище. І "нагадати мені дату" це саме те, що хочеться використовувати, щоб отримати сигнал тривоги / попередження.
Grrrr

2

Ось така ж функціональність, як і вищезгаданий AppleScript; але в JXA з 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);
}

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.