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

  1. Launch Automator (usually found within your Applications folder)
  2. Go to File > New
  3. Select Service and click Choose
  4. In the top right hand of the window that appears, ensure that "No input" is selected from the Service receives drop-down list
  5. Ensure the In drop-down list is showing "Any application"
  6. In the second column containing the long list, find "Run AppleScript" and double-click on it
  7. This will add the Run AppleScript window on the right
  8. Now, replace the (* Your script goes here *) with the script you want
  9. Save the service using a meaningful name (e.g. GoToInbox).

Now to the next step.

2. Creating your shortcut

  1. Go to System Preferences > Keyboard > Shortcuts
  2. Select Services from the sidebar
  3. Find your service (it'll be in the list on the right-hand side)
  4. Add a shortcut by double clicking on the service name
  5. Now go to System Preferences > Security & Privacy > Privacy
  6. Select Accessibility in the sidebar
  7. Click on the + sign (you may need to unlock the padlock if it's locked)
  8. Add Automator.
  9. Add Finder (to find this you will need to navigate to /System/Library/CoreServices/Finder.app).
  10. 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:

  1. use a launcher that supports setting global hot keys and executing AppleScripts (Alfred, Keyboard Maestro, FastScripts - whatever takes your fancy), or
  2. 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.

  1. cmd + space and type "automator"
  2. Select: File > New
  3. Select "Quick Actions"
  4. Search in the top of the left section for "applescript" or "shellscript" or "javascript"
  5. Drag desired action to right side workflow
  6. File > Save with desired name

To add keystroke to your workflow:

  1. Open System Preferences
  2. Select Keyboard > Shortcuts
  3. Select Services on left
  4. Find newly created service and double-click on "none" to add keyboard shortcut