Bagaimana saya bisa menambahkan pengingat melalui baris perintah?

18

Kadang-kadang mungkin berguna untuk menambahkan beberapa pengingat ke Reminders.app dari baris perintah - terutama karena mereka disinkronkan ke iCloud. Apakah ada cara untuk melakukannya?

Solusi yang tidak bergantung pada AppleScript lebih disukai : a) karena alasan kinerja (mungkin konyol) dan b) solusi AppleScript sering terasa canggung atau terlalu bertele-tele kepada saya.

myhd
sumber
2
Mengapa Anda memilih untuk tidak menggunakan AppleScript?
Daniel

Jawaban:

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

Anda juga bisa membuat alur kerja Automator hanya dengan tindakan Item Pengingat Baru kosong dan kemudian jalankan dengan automator -i title test.workflow.

Lihat juga posting ini di Petunjuk Mac OS X .

Lri
sumber
Terima kasih atas jawaban Anda. Sayangnya, ini tidak berjalan di skrip shell atau di Script Editor. Apa yang saya lewatkan?
myhd
1
Tambahkan #!/usr/bin/env bashsebagai baris pertama dan jalankan chmod +x /path/to/script, atau jalankan bash /path/to/script.sh. Atau hapus baris pertama dan terakhir dan simpan AppleScript Editor.
Lri
1
Petunjuk Automator berhasil! Berbeda dengan solusi AppleScript tidak perlu meluncurkan Reminders.app, yang persis seperti yang saya inginkan.
myhd
14

Berikut versi lain yang memungkinkan Anda untuk mengatur judul, tanggal dan waktu berakhir melalui argumen baris perintah.

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

Jadi, jika Anda memberi nama skrip ini "mengingatkan" dan memberikannya hak istimewa eksekusi (chmod 755 mengingatkan), Anda bisa melakukan ini:

$ ./remind "Go to grocery store" 12/15/2013 10:00:00PM                              
renfredxh
sumber
Ini berfungsi untuk saya, tetapi bagaimana saya bisa menambahkan alarm. Itu adalah bagaimana saya bisa membuatnya popup dan mengingatkan saya pada tanggal dan waktu pengingat? Karena itu, saya memiliki pengingat, tetapi tidak menerima pemberitahuan.
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
sumber
1
Hai terima kasih! Ini hanya berfungsi pada Sistem di mana bahasa Inggris adalah bahasa Antarmuka Pengguna. Dalam Bahasa lain, a daftar nama dilokalkan, misalnya "Pengingat" menjadi "Erinnerungen" dalam bahasa Jerman
myhd
Contoh ini sebenarnya menggambarkan penggunaan "ingatkan saya tanggal" sebagai kebalikan dari "tanggal jatuh tempo" di atas. Dan "ingatkan saya tanggal" adalah persis apa yang ingin digunakan untuk mendapatkan alarm / peringatan.
Grrrr
2

Berikut fungsionalitas yang sama dengan AppleScript di atas; tetapi dalam JXA dengan 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
sumber