ฉันจะเพิ่มการเตือนผ่านทางบรรทัดคำสั่งได้อย่างไร


18

นาน ๆ ครั้งมันอาจมีประโยชน์ในการเพิ่มการเตือนความจำบางอย่างใน Reminders.app จากบรรทัดคำสั่ง - โดยเฉพาะอย่างยิ่งเพราะมันถูกซิงค์กับ iCloud มีวิธีการทำเช่นนั้น?

โซลูชันที่ไม่ต้องพึ่งพา AppleScript เป็นที่ต้องการ : ก) สำหรับเหตุผลด้านประสิทธิภาพ (อาจโง่) และ b) โซลูชัน AppleScript มักจะรู้สึกงุ่มง่ามหรือละเอียดเกินไปกับฉัน


2
ทำไมคุณไม่ต้องการใช้ AppleScript
แดเนียล

คำตอบ:


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 -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 Editor
Lri

1
เคล็ดลับ Automator ทำเคล็ดลับ! ตรงกันข้ามกับโซลูชัน AppleScript ไม่จำเป็นต้องเปิดใช้ Reminders.app ซึ่งเป็นสิ่งที่ฉันต้องการ
myhd

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    

ดังนั้นหากคุณต้องตั้งชื่อสคริปต์นี้ว่า "เตือน" และให้สิทธิ์ดำเนินการ (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);
}

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.