Làm cách nào để thêm lời nhắc qua dòng lệnh?


18

Thỉnh thoảng có thể hữu ích khi thêm một số lời nhắc vào Reminder.app từ dòng lệnh - đặc biệt là vì chúng được đồng bộ hóa với iCloud. Có cách nào để làm như vậy?

Một giải pháp không dựa vào AppleScript được ưu tiên : a) vì lý do hiệu suất (có thể là ngớ ngẩn) và b) Các giải pháp AppleScript thường cảm thấy vụng về hoặc quá dài dòng đối với tôi.


2
Tại sao bạn không thích sử dụng AppleScript?
Daniel

Câu trả lời:


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

Bạn cũng có thể tạo một quy trình làm việc của Automator chỉ bằng một hành động Mục nhắc nhở mới trống và sau đó chạy nó với automator -i title test.workflow.

Xem thêm bài viết này tại Mac OS X Gợi ý .


Cảm ơn về câu trả lời của bạn. Thật không may, điều này không chạy trong tập lệnh shell hoặc trong Trình chỉnh sửa tập lệnh. Tôi đang thiếu gì?
myhd

1
Hoặc #!/usr/bin/env bashlà thêm dòng đầu tiên và chạy chmod +x /path/to/script, hoặc chạy bash /path/to/script.sh. Hoặc xóa các dòng đầu tiên và cuối cùng và lưu nó AppleScript Editor.
Lri

1
Gợi ý của Automator đã làm được mẹo! Trái ngược với giải pháp AppleScript, nó không cần khởi chạy Reminder.app, đó chính xác là những gì tôi muốn.
myhd

14

Đây là một phiên bản khác cho phép bạn đặt tiêu đề, ngày kết thúc và thời gian thông qua các đối số dòng lệnh.

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

Vì vậy, nếu bạn đặt tên cho tập lệnh này là "nhắc nhở" và cho nó thực thi các đặc quyền (nhắc nhở chmod 755), bạn có thể làm điều này:

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

Điều này làm việc cho tôi, nhưng làm thế nào tôi có thể thêm một báo động. Đó là cách tôi có thể làm cho nó thực sự bật lên và nhắc nhở tôi vào ngày và thời gian của lời nhắc? Vì nó là, tôi có một lời nhắc, nhưng không nhận được thông báo.
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
Xin chào, cảm ơn! Điều này chỉ hoạt động trên Hệ thống trong đó tiếng Anh là ngôn ngữ Giao diện người dùng. Trong các ngôn ngữ khác, một tên danh sách được bản địa hóa, ví dụ "Nhắc nhở" trở thành "Erinnerungen" trong tiếng Đức
myhd

Ví dụ này thực sự minh họa việc sử dụng "ngày nhắc nhở tôi" trái ngược với "ngày đáo hạn" ở trên. Và "nhắc tôi ngày" chính xác là những gì người ta muốn sử dụng để nhận được báo động / cảnh báo.
Grrrr

2

Đây là chức năng tương tự như AppleScript ở trên; nhưng trong JXA với 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);
}

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.