如何通过命令行添加提醒?


18

偶尔从命令行向Reminders.app添加一些提醒可能会很有用-特别是因为它们已同步到iCloud。有什么办法吗?

首选不依赖AppleScript的解决方案:a)出于性能原因(可能很愚蠢),并且b)AppleScript解决方案对我来说常常感到笨拙或过于冗长。


2
为什么您不想使用AppleScript?
丹尼尔

Answers:


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提示上的这篇文章


谢谢您的回答。不幸的是,它不能在Shell脚本或脚本编辑器中运行。我想念什么?
myhd 2012年

1
添加#!/usr/bin/env bash为第一行并运行chmod +x /path/to/script,或者运行bash /path/to/script.sh。或删除第一行和最后一行并将其保存为AppleScript编辑器。
Lri 2012年

1
Automator提示可以解决问题!与AppleScript解决方案相比,它不需要启动Reminders.app,而这正是我想要的。
myhd 2012年

14

这是另一个版本,允许您通过命令行参数设置标题,结束日期和时间。

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

因此,如果要将此脚本命名为“ remind”并赋予其执行特权(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 2015年

此示例实际上说明了使用“提醒我的日期”,而不是上面的“到期日”。而“提醒我约会”正是要用来获取警报/警报的内容。
Grrrr

2

这与上面的AppleScript具有相同的功能;但是在带有ES6的JXA中。

#!/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);
}

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.