• Stars
    star
    186
  • Rank 206,116 (Top 5 %)
  • Language AppleScript
  • License
    MIT License
  • Created about 4 years ago
  • Updated almost 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

My collection of AppleScripts I've developed or acquired over the years.

My AppleScripts

Collection of AppleScripts I've developed or acquired over the years. Some are great as standalone scripts while others are great for incorporation with others.

This repo is in continuous development and will be updated as scripts are developed (and as I have time).

About

This repo was created for two main reasons.

  1. Provide others with useful scripts for automating their workflow on macOS.
  2. As a tool for AppleScript education by providing example scripts, tools, tips and AppleScript resources.

With some exceptions, almost all these scripts are executable by themselves via the Script Menu. However, I generally turn to third party automation apps to execute them, including Keyboard Maestro, Alfred, BetterTouchTool and Hazel.

  • Notes on formatting For those who are unaware, the standard file format for AppleScripts is .scpt or .scptd, but these file types are not readable on GitHub, so for readability's sake, all these scripts have been exported as a .applescript file (which is just a text file). So if you were wondering about the file type, this is the reason.

  • Many of these scripts depend on this script library I developed, so if you see the following line at the top of the script, make sure you get that library and place it into ~/Library/Script Libraries otherwise the script is non-functional.

use kl : script "Kevin's Library"

Contents

I've divided the scripts into 3 sections:

  1. Application Scripts - Scripts designed for use in a specific application.
  2. Global Scripts - Scripts that are meant to be executed in any application.
    • NOTE: There are scripts here that are specific to an application but are meant to executed globally, so the scripts in the Application Scripts section with the globe icon ( ๐ŸŒŽ ) next to them imply global scope for that specific application.
  3. Scripts for Script Development - These scripts are useful handlers that can be copied into scripts or into a script library that makes scripting much simpler.

Clicking the name of the script will show you the script directly, but make sure to view the README for each section by clicking the title of the section to see instructions/explanations/demos.

Although not needed, the shortcut keys I use to execute these via Keyboard Maestro or Alfred are included in case your're interested

Application Scripts

Application Scripts Shortcut Key
Alfred Show Recent Files for Front App ๐ŸŒŽ ๐ŸŽฆ hyperkeyO
Browse Current Workflow in Alfred โŒ˜R
BetterTouchTool BetterTouchTool Library
Finder Copy Path as Alias โŒ˜โŒƒC
Go to Custom Folder too many to list
Monthly Cleanups ๐Ÿ“ท
Open Selection in iTerm ๐ŸŽฆ โŒฅโ‡งT
iTerm Copy Text and Send to iTerm ๐ŸŒŽ โŒ˜โŒฅโŒƒT
Keyboard Maestro Edit Linked or In-Line AppleScript ๐ŸŽฆ โŒฅโ‡งE
Add|Remove Status Menu Trigger โŒฅS
Collapse All Desired Actions ๐ŸŽฆ โŒฅโŒƒ[
Copy Macro's AppleScript Trigger โŒ˜โŒƒC
Edit Last Executed Macro ๐ŸŒŽ โŒƒโ‡งE
Edit Macro Group of Front App ๐ŸŒŽ โŒ˜โŒฅK
Go To Executed Macro โŒ˜โŒฅG
Recursively Get Every Action
Renumber Macro Prefix Numbers ๐Ÿ“ท โŒ˜โŒƒ3
Run Current Macro ๐ŸŒŽ โŒ˜โŒƒR
Mail Set Color of Text ๐ŸŽฆ ๐Ÿ“ท โŒ˜โ‡ง(C)olor
Make Mail URL โŒƒU
Mark All Inbox Messages as Read ๐ŸŒŽ
Show Message ๐ŸŒŽ ๐Ÿ“ท
Markdown Insert Markdown Style Buttons ๐Ÿ“ท โŒฅH
OmniFocus Push Due Date โŒฅD
Set Duration โŒฅโ‡ง1-9
Safari Close Left Tab โŒฅ[
Close Right Tab โŒฅ]
Duplicate Tab โŒƒD
Do Javascript Handler
Show|Create Tab
Script Debugger Duplicate Tab F7
Handler Tester F6
Insert Dynamic Handler Description ๐ŸŽฆ
Open Used Script Libraries โŒƒโŒฅO
Run Front Script ๐ŸŒŽ hyperkeyR
Duplicate for GitHub
Save As Text Script โŒƒS
Save a Copy of Front Script as Text โŒƒS
Toggle Minimal View โŒ˜โŒฅโ‡งM
Typinator Edit Last Expanded Rule ๐ŸŒŽ๐Ÿ“ท โŒ˜โŒƒโŒฅE
New Snippet from Clipboard|Selection ๐ŸŒŽ โŒ˜โŒƒโŒฅN
zoom Toggle Mute ๐ŸŒŽ โŒ˜โŒฅspace
Toggle Video ๐ŸŒŽ โŒ˜โŒƒspace

Global Scripts

Context Scripts Shortcut Key
Document Closers Close All Un-Saved Documents ๐Ÿ“ท โŒ˜โŒฅโ‡งW
Close All With Saving ๐Ÿ“ท โŒ˜โŒฅโ‡งW
Close All Without Saving ๐Ÿ“ท โŒ˜โŒฅโ‡งW
Close With Saving ๐Ÿ“ท โŒฅW
Close Without Saving ๐Ÿ“ท โŒƒW
System Control Restart AirPort Extreme
Toggle Bluetooth
Toggle Hazel
Toggle Menu Bar Visibility
Toggle Screen Resolution โŒ˜โŒฅF2
Toggle WiFi
Various Click Script Menu โŒƒโ‡งS
Get Keychain Access Passwords
Paste Safari URL With Title hyperkeyU
Start|Stop Quicktime Screen Recording โŒƒโŒฅQ

Scripts for Script Development

Context Scripts
Text Utilities Extract Between
Search With Regex
Split Text
Transform Text
{++JSON handlers++}
File Utilities Get File Metadata
Various Click at Mouse Location

Icon Key

Icon Meaning
๐ŸŽฆ script has a gif demo in its section's README
๐Ÿ“ท script has a screenshot in its section's README
๐Ÿ“บ video to watch
๐ŸŒŽ script is executed globally for a specific app

Shortcut key symbols

Symbol Key
โŒ˜ command
โŒฅ option
โŒƒ control
โ‡ง shift
hyperkey command option control shift

Tools

  • Script Debugger - By far the most valuable scripting tool. When I first started learning scripting with Script Editor, the process was slow and frustrating. With Script Debugger I learned 100 times faster and understood everything much easier.
  • [UI Browser][733e1356] - Invaluable tool for UI scripting. UI scripting is brutal on its own, and slightly less brutal with the Accessibility Inspector, but UI Browser makes it so much simpler, I tried it once and knew I had to get it.
  • JSON Helper - Makes working with JSON so much simpler, incredibly useful and free!
  • Location Helper - Find your geo code location in a snap, and for free!
  • Dash - Fantastic tool for API browsing, after installation go to Preferences > Downloads and install the AppleScript docset to have blazing fast access to AppleScript documentation, plus its free!
  • IDE Extensions (I do all my script writing in Script Debugger but most of my Markdown stuff in VS Code or [Atom][23ce9ea9] or so these are very useful.)
    • VSCode Extensions:
      • AppleScript - allows AppleScript syntax and the ability to build and run AppleScripts.
    • Atom Packages
      • atom-applescript - adds language support to Atom so you can view AppleScript syntax
      • build-osa - Lets you build and execute AppleScripts from Atom.
  • Alfred Workflows
    • AppScripts - List, search and run/open AppleScripts for the active application
    • KeyCodes - Great for UI scripting where you need to type a non-character key. Lets you find AppleScript key codes in an instant by typing kc [<key name>].
  • Keycue - I use this more for Keyboard Maestro, but it's a great app for quickly looking up keyboard shortcuts for macros or menu items.

Tips

Keep Scripts In Sync Using Aliases

In order for scripts to be accessible via the Script Menu, scripts must be stored in ~/Library/Scripts, but if you like to keep your scripts synced between devices, this location is a pain. I used to have a Hazel rule set up to sync ~/Library/Scripts to Dropbox that worked fine for years, but I didn't like all the extra processing needed to sync and worse yet I had 2 copies of every script which was messy and got confusing.

I realized later that moving all my scripts to ~/Dropbox/Library/Scripts then creating an alias to that location and moving it ~/Library allows for my scripts to be stored in Dropbox, and still be accessible in the Script Menu!

This method works exactly as well with the ~/Library/Script Libraries folder.

Here's a screenshot of what it looks like in Finder.

aliasDemo

How to do it:

  1. Make a backup of the folder your moving to your Desktop just in case you mess up.
  2. I recommend having the same folder structure in Dropbox so make the folder ~/Dropbox/Library/
  3. Copy the folder you want to sync (~/Library/Scripts/ or ~/Library/Script Libraries/) and paste into the ~/Dropbox/Library/ folder you made.
  4. Delete the original folder you copied from ~/Library/
  5. Select the folder you pasted into ~/Dropbox/Library/ then click File > Make Alias
  6. Move the resulting alias back to ~/Library/. The result will be like ~/Library/Scripts alias so rename the alias by removing the " alias" part so it looks like ~/Library/Scripts and you're good to go!
  • NOTE: Symlinks don't work for this method, I originally tried the following command which did make an alias, but then the scripts weren't accessible via the Script Menu.

    ln -s ~/Library/Scripts ~/Dropbox/Library/Scripts/

Make a Hyperkey

The caps lock key is a borderline useless key for a decent typist, but what's great about Macs is that we can change that. By a few adjustments in System Preferences and installing the free software Karabiner, we can turn that useless key into a extremely useful hyperkey.

Hyperkey just means that the caps lock key will emulate holding down โŒ˜โŒƒโŒฅโ‡ง at the same time, and since no application would use such a combination of keys to execute a command, this makes a whole new modifier key for us to implement.

How to do it:

  1. Download Karabiner
  2. Go to System Preferences > Keyboard and click on Modifier Keys... and make it look like this keyboardprefs
  3. Launch the Karabiner-Elements app
  4. Click the Complex Modifications button and click the Add Rule button to install the hyperkey mod. You can see the mods I use below.

karabinerMods

And that's it! Now you have the super useful hyperkey!

Note that one of the mods I use to toggle caps lock is to click both shift keys at the same time for those rare cases when I need it.


Resources

  • AppleScript Language Guide - Necessary for efficient script development, explains everything about how to script with AppleScript. (I highly recommend the Dash version though, much faster and easier to use)
  • Macscripter.net - Forum for AppleScripters to post examples and ask questions. Definitely create a free account.
  • โ€˜Everyday AppleScriptObjCโ€™ Third Edition - Aimed at the more experienced scripter, but it's a great tool for those interested in expanding scripting power.

My Favorite AppleScripters

My Favorite Tutorials

Tutorials I've bookmarked over the years that I've found particularly helpful or educational.

Context Link
Safari Stuff How to Fill Out Forms on Websites with AppleScript
How to click a button on a Web Page with AppleScript
How to Extract Information From a Website Using AppleScript
How to Select a Drop Down Menu With Applescript
AppleScript Screen Scraping to Excel Example
Keyboard Maestro Stuff Using AppleScript to Get and Set Keyboard Maestro Variables
Scripting the Keyboard Maestro editor
Script Debugger stuff Tutorials | Late Night Software ๐Ÿ“บ
iWork iWork and Automation
Various Date/Time Calculations using AppleScript
Storing and Accessing Data with AppleScript
AppleScript Power Handlers
Giving your AppleScripts a Face Lift with AppleScriptObjC ๐Ÿ“บ
Starting Out AppleScript - The Language of Autoamtion ๐Ÿ“บ
Script Menu ๐Ÿ“บ

Licensing & thanks

These scripts are released under the MIT License.

  • v1.0.0

To-Do

  • Add more app categories
  • Refine readme
  • Add icons to favorite scripts
  • Add tips section
  • Add karabiner tutorial
  • Add descriptions to all the READMEs
  • Add my Script Debugger clippings
  • Add JSON and plist handlers to script development section

More Repositories

1

alfred-microsoft-onenote-navigator

Use Alfred to browse through your Microsoft OneNote notebooks, section groups and sections and then jump to them instantly.
Python
69
star
2

alfred-bettertouchtool-gestures

Use Alfred to quickly search through all the trackpad gestures within BetterTouchTool
Python
17
star
3

AppleScript-libraries

Script libraries useful for developing scripts.
AppleScript
15
star
4

alfred-search-keyboard-maestro-vars

Search all Keyboard Maestro variables and clipboards to view or edit their values.
Python
10
star
5

alfred-script-debugger-clippings

Use alfred to search and insert system and user defined Script Debugger clippings
Python
8
star
6

alfred-workflow-search

Search for all workflows, recently edited workflows, or workflows made by yourself.
Python
5
star
7

alfred-jump-to-handler-script-debugger

Alfred workflow that allows you to search through the handlers of the front script of Script Debugger and select them within the script.
AppleScript
5
star
8

script-debugger-extra-editor-actions

Scripts to add several useful text editing functions typically available on most IDEs.
AppleScript
4
star
9

alfred-school-bookmarks

How I use Alfred to get to all the important stuff for school in a flash.
Python
3
star
10

CPU-scheduling-simulator

C++
1
star
11

alfred-script-debugger-script-lib-handlers

Search the handlers of all the used script libraries of the current script and insert a dynamically made clipping
Python
1
star
12

qt-opengl-radio-with-frequency

A more complex integration of the radio created previously.
C++
1
star
13

virtual-memory-page-replacement-algorithms

The goal of this project is to compare and assess the impact of these algorithms on the number of page faults incurred across a varying number of physical-memory page frames available.
Python
1
star