Apple Automator

From HaFrWiki42
Jump to navigation Jump to search

Automator is a funny tool, but a good tutorial of using it is lacking. I really miss some good Automator tutorials online. It's such a great and I guess underrated and underused tool. Here I'll show you how to combine it with rsync to easily synchronise two folders. I have looked on the Internet to find good tutorials and decided to collect the best ones.


Create New File

To create a folder is already covered in the services. This one will make it possible to create a New (text)-file in a folder. You need to stand on the folder-name to see this service.

  • Start Automator and create a new Service.
  • Set the Service to receive "folders".
  • Set the application to Finder.
  • Drag and drop the action Run AppleScript into the work area.
  • Paste the following AppleScript:
  on run {input, parameters}
    tell application "Finder"
      set currentPath to insertion location as text
      set x to POSIX path of currentPath
    end tell
    return x
  end run
  • Drag and drop the action Set value of a variable into the work area.
  • Create a new variable called CurrentFolder.
  • Drag and drop the action New Text File into the work area.
  • Drag the variable CurrentFolder to the Where entry of the New Text File action.
  • Click the Option button in the action, and select Show this action when the workflow runs.


Batch rename

Service rename files

The Automator.app has allowed batch-renaming files, but it has always been pretty slow, because it created PowerPC binaries. [1]
Fortunately, in Mac OS X 10.7, Automator.app got really fast, making it a lot more useful.

  • Start Automator and create a new Service.
  • Select files or folders at the top.
  • In the left sidebar, search for Rename Finder Items, and drag it the main pane.
  • In the modal box, click Don’t Add.
  • Click on Options in the new workflow segment and check Show this action when the workflow runs.
  • In the File Menu, click Save and name it Rename files.
  • Now you can select files in the Finder, go the application menu, hover over Services, and click Rename.
    • In the upcoming Window choose in the Combo-box for Rename text, which imho is the most used feature.

Get File Path

Automator Action Get File Path
Automator Action Get File Path

The Get File Path action which is an essential part for copy the full path of a file to the clipboard is my favourite action.
Unfortunately this action is not a basic building block in Automator.
You can download the Action from here [2].

To instal an Action do:

  1. Doube click the archive file (.zip file) to unarchive it if you received your Action packed in an archive or zip-file.
  2. Launch Automator application,
  3. Select Import Actions from Automator File menu,
  4. Choose the action (.action file) to install or double click the action to install if your Mac OS X is Snow Leopard or later.

Synchronize Folders

This example script is in basic taken from Bananical [3], but with a few enhancements to make errors less severe. The script describes real mic what and how you can use Automator to script you results

The script uses the UNIX rsync command [4]. Please take care in using this script. It may be dangerous to use.

  1. Start Automator application and choose the Workflow as template for your Workflow.
  2. Add the action Ask for Finder Items from the category Files & Folders or use the search option to find it.
    • Change the text of the Prompt field into Choose a folder to synchronize from.
    • Select the folder for the Start at field into your folder of choice.
    • Change Type into Folders.
  3. Add action Set value for Variable and give the variable the name source_folder.
    • Now ctrl-click (or right click) on the text field and select Ignore input from the popup-window.
  4. Repeat Step 2: Add the action Ask for Finder Items
    • Change the text of the prompt into Choose a Target folder.
  5. Repeat Step 4: Add action Set value for Variable and give the variable the name target_folder.
  6. Add action Ask for Confirmation
    • Change the prompt into Synchronizing from .
    • Drag the Variable source_folder into the prompt field.
    • and the text to
    • Drag the Variable target_folder into the prompt field.
    • Again, ctrl-click (or right click) on the text field and select Ignore input from the popup-window.
  7. Now add Get Value of Variable for the source_folder and add Ignore the input.
  8. Again add Get Value of Variable for the source_folder and add Ignore the input.
  9. Add the action Run Shell Script. Add the following text:
if [[ -z $1 ]] ; then
   	echo "Invalid choice for Source ($1), aborting"
	exit -1
fi
if [[ -z $2 ]] ; then
   	echo "Invalid choice for Target ($2), aborting"
	exit -1
fi

rsync -va "$1/" "$2/" 
  1. Please not that you can add the option --delete to the rsyc, but don't do that in the first test run.

Pop-up Window

Looking for a popup window for Apple OSX? Here is terminal-notifier. To install:

 sudo gem install terminal-notifier

This works better than osascript because that will give you an error message when you try to use arguments. The sources are also available at:

  https://github.com/alloy/terminal-notifier.git

See also

top

Reference

top

  1. Konstantin Käfer, Author of the Batch rename article.
  2. MiKo Mac_Soft, Automator action to get file/folder path with POSIX/HFS/URL format
  3. Bananica, Synchronize 2 folders on Mac.
  4. Linux.die.net, man page for rsync.