-- Function to convert day names to corresponding numbers
on convertDayToNumber(day)
set dayNumber to missing value
if day = "Sunday" then
set dayNumber to 0
else if day = "Monday" then
set dayNumber to 1
else if day = "Tuesday" then
set dayNumber to 2
else if day = "Wednesday" then
set dayNumber to 3
else if day = "Thursday" then
set dayNumber to 4
else if day = "Friday" then
set dayNumber to 5
else if day = "Saturday" then
set dayNumber to 6
end if
return dayNumber
end convertDayToNumber
-- Display day selection dialog
set selectedDays to choose from list {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Every day"} with multiple selections allowed and empty selection allowed
if selectedDays is false then
display dialog "No day selected. Exiting..."
return
end if
-- Display time selection dialog
set selectedTime to display dialog "Enter the desired startup time in xx:xx:xx format:" default answer ""
set startupTime to text returned of selectedTime
-- Convert selected days to day numbers
set dayNumbers to {}
repeat with selectedDay in selectedDays
if selectedDay = "Every day" then
set dayNumbers to {0, 1, 2, 3, 4, 5, 6}
exit repeat
else
set end of dayNumbers to convertDayToNumber(selectedDay)
end if
end repeat
-- Set automatic startup using pmset command
repeat with dayNumber in dayNumbers
set startupCommand to "sudo pmset repeat wake MTWRFSU " & dayNumber & " " & startupTime
try
do shell script startupCommand with administrator privileges
display dialog "Automatic startup has been set for " & selectedDays & " at " & startupTime
on error errMsg
display dialog "An error occurred: " & errMsg
end try
end repeat