How do I assign a keyboard shortcut to an AppleScript I wrote?
Solution 1:
It is also possible without paid 3rd party apps!
1. Open Automator.
2. Make a new Quick Action.
3. Make sure it receives 'no input' at all programs.
4. Select Run Apple Script and type in your code.
5. Save!
Now go to System Preferences > Keyboard > Shortcuts. Select Services from the sidebar and find your service. Add a shortcut by double clicking (none)
.
Finally go to System Preferences > Security > Privacy > Accessibility and add Automator and the preferred app to run the shortcut.
Solution 2:
In summary you will need to use:
- Automator to create a service that runs an Apple Script
- System Preferences to assign a keyboard shortcut to the service
Below are the steps involved for each.
1. Create a service using Automator
- Launch Automator (usually found within your Applications folder)
- Go to File > New
- Select Service and click Choose
- In the top right hand of the window that appears, ensure that "No input" is selected from the Service receives drop-down list
- Ensure the In drop-down list is showing "Any application"
- In the second column containing the long list, find "Run AppleScript" and double-click on it
- This will add the Run AppleScript window on the right
- Now, replace the (* Your script goes here *) with the script you want
- Save the service using a meaningful name (e.g. GoToInbox).
Now to the next step.
2. Creating your shortcut
- Go to System Preferences > Keyboard > Shortcuts
- Select Services from the sidebar
- Find your service (it'll be in the list on the right-hand side)
- Add a shortcut by double clicking on the service name
- Now go to System Preferences > Security & Privacy > Privacy
- Select Accessibility in the sidebar
- Click on the + sign (you may need to unlock the padlock if it's locked)
- Add Automator.
- Add Finder (to find this you will need to navigate to /System/Library/CoreServices/Finder.app).
- Exit your System Preferences.
Now you should be able to do two things:
1. Run the service from any application by going to the Services list within any Application menu (e.g. Finder > Services, Safari > Services, TextEdit > Services, etc) and select the service you just created.
2. Use the keyboard shortcut to run the service.
NOTE: I am aware that for some users keyboard shortcuts do not seem to work even though they've been assigned to a service. This is a whole other topic, but if this happens in your case, at least you can run the service from within any application you're using.
Let me know how you go.
Solution 3:
You cannot assign keyboard shortcuts to AppleScripts out of the box. However, you can:
- use a launcher that supports setting global hot keys and executing AppleScripts (Alfred, Keyboard Maestro, FastScripts - whatever takes your fancy), or
- put the script into a Run AppleScript action inside an Automator service. Note it has to be a service, not an application or an ordinary workflow: services can be assigned hotkeys in the System Preferences keyboard settings.
Solution 4:
Note: In macOS Mojave it was renamed from "Service" to "Quick Action" in Automator.
- cmd + space and type "automator"
- Select: File > New
- Select "Quick Actions"
- Search in the top of the left section for "applescript" or "shellscript" or "javascript"
- Drag desired action to right side workflow
- File > Save with desired name
To add keystroke to your workflow:
- Open System Preferences
- Select Keyboard > Shortcuts
- Select Services on left
- Find newly created service and double-click on "none" to add keyboard shortcut