commit 08a54cc087ef94b205f79307c53d4bd3dbd56d9e Author: thanhtl Date: Thu Apr 10 17:51:05 2025 +0700 Add Add-selected-file-to-Calend.scpt diff --git a/Add-selected-file-to-Calend.scpt b/Add-selected-file-to-Calend.scpt new file mode 100644 index 0000000..329db48 --- /dev/null +++ b/Add-selected-file-to-Calend.scpt @@ -0,0 +1,76 @@ +-- Prompt for date and time +set inputDate to text returned of (display dialog "Enter date (D/M):" default answer "") +set inputTime to text returned of (display dialog "Enter time (H-M):" default answer "") + +-- Prompt for location +set locationOptions to {"18 Tran Huu Duc +My Dinh 2, Nam Tu Liem, Ha Noi, Vietnam", "2 Lang Ha +Thanh Cong, Ba Dinh, Ha Noi, Vietnam", "27 Dai Co Viet +Le Dai Hanh, Hai Ba Trung, Ha Noi, Vietnam"} +set chosenLocation to choose from list locationOptions with prompt "Select a location:" default items {"18 Tran Huu Duc +My Dinh 2, Nam Tu Liem, Ha Noi, Vietnam"} + +-- Prompt for note +set noteOptions to {"TB", "PB. Thư", "PB. Hoa", "PB. Quý", "PB. Thuỷ", "PB. Dân", "PB. Hải"} +set chosenNote to choose from list noteOptions with prompt "Select a note:" default items {"TB"} + +-- Parse the input date and time +set {dayStr, monthStr} to my parseDate(inputDate) +set {hourStr, minuteStr} to my parseTime(inputTime) + +-- Set the year to 2025 +set yearInt to 2025 + +-- Create the start and end date-time objects +set startDateTime to my createDate(yearInt, monthStr, dayStr, hourStr, minuteStr) +set endDateTime to my createDate(yearInt, monthStr, dayStr, (hourStr + 2), minuteStr) + +-- Get the selected DEVONthink record +tell application id "DNtp" + set theRecord to content record + set theName to name of theRecord + set theURL to reference URL of theRecord +end tell + +-- Extract the event name from the file name +set eventName to my extractEventName(theName) + +-- Create the event in Apple Calendar +tell application "Calendar" + tell calendar "Agribank" -- Calendar name set to "Agribank" + set newEvent to make new event with properties {summary:eventName, start date:startDateTime, end date:endDateTime, location:item 1 of chosenLocation, url:theURL, description:item 1 of chosenNote} + + make new display alarm at newEvent with properties {trigger interval:-1 * (24 * 60) + (20 * 60)} -- Alert 1 day before at 8 PM + end tell +end tell + +-- Handlers +on parseDate(inputDate) + set {TID, text item delimiters} to {text item delimiters, "/"} + set {dayStr, monthStr} to text items of inputDate + set text item delimiters to TID + return {dayStr, monthStr} +end parseDate + +on parseTime(inputTime) + set {TID, text item delimiters} to {text item delimiters, "-"} + set {hourStr, minuteStr} to text items of inputTime + set text item delimiters to TID + return {hourStr, minuteStr} +end parseTime + +on createDate(yearInt, monthStr, dayStr, hourStr, minuteStr) + set theDate to current date + set year of theDate to yearInt + set month of theDate to monthStr as integer + set day of theDate to dayStr as integer + set time of theDate to (hourStr as integer) * hours + (minuteStr as integer) * minutes + return theDate +end createDate + +on extractEventName(fileName) + set {TID, text item delimiters} to {text item delimiters, "_"} + set eventName to text item 3 of fileName + set text item delimiters to TID + return eventName +end extractEventName \ No newline at end of file