Tag Archive: “applescript”

Script Runners

Rather than repeatedly explaining how to launch each script I write, I’m going to use this post as a generic reference.

AppleScripts are typically little bits of code that extend or connect your applications’ functionality. As such, they are not necessarily invoked like normal programs. Many fine utilities exist which provide convenient ways to run scripts, including LaunchBar, Butler, QuickSilver, Keyboard Maestro, and others. Here, however, I will describe the simple script runners I prefer, one of which is even built in to Mac OS X.

FastScripts

I favor FastScripts, which utilizes the same script folders as Apple’s Script Menu. It features assignable keyboard shortcuts, which help scripts act more like natural extensions of your applications. The FastScripts menu looks like this:

Screenshot: Example FastScripts menu contents

Apple Script Menu

To enable the Script Menu, open “AppleScript Utility” (in /Applications/AppleScript/) and check the “Show Script Menu in menu bar” option:

Screenshot: Enabling the Script Menu with AppleScript Utility

A “script” icon will appear in your menu bar. It displays a menu like this:

Screenshot: Example Script Menu contents

Scripts stored in ~/Library/Scripts/Applications/Finder/ are listed in the “Finder Scripts” section, which appears only when the Finder is the frontmost application. Scripts stored in ~/Library/Scripts/ are listed in the unlabeled section and are always accessible. You can create application subfolders for application-specific scripts yourself. The tilde (~) represents your home folder.

Here is a video demonstration of the Script Menu.

Posted on Monday, September 24th, 2007.

Yojimbo Script Updates

Minor updates to a few Yojimbo AppleScripts are available: Export with Comment Tags, Archive Bookmarks, and Backdate Items. These updates allow the scripts to act on items even when Yojimbo’s item list pane does not have input focus. This means you can run the scripts when editing items as well as when selecting them.

Posted on Friday, August 31st, 2007.

Yojimbo Export with Comment Tags

In response to this query, I wrote a script which allows Yojimbo items to be exported with their tags preserved as Spotlight comments. I don’t really use Spotlight, so I’m not sure if the comment format is ideal, but it works fine for a first draft.

Example Screencast

Now updated for compatibility with Mac OS X 10.5.

Download ExportwithCommentTags.scpt.zip 1.2 4k

Put the script in ~/Library/Scripts/Applications/Yojimbo, select some items, and choose “Export with Comment Tags” from your script menu.

Posted on Thursday, August 30th, 2007.

“Open As” Pseudo-Stationery Finder AppleScript

Update: Now located at https://github.com/anoved/Finder-Scripts/tree/master/Open%20As


Use this AppleScript to create and open an explicitly named copy of the selected file or folder. You will be prompted to specify the name and location of the new copy. Clicking “Save” will duplicate the item and open the new duplicate.

Open As screenshot

This script is the result of dissatisfaction with some applications’ lack of support for Stationery Pad files. Specifically, the default behavior appears to be for the Finder to create and open a generic duplicate with “copy [#]” appended to the original base filename. I find it more convenient to name the new instance directly, so that is the functionality this script provides. Stationery pads are not required as it works with regular files.

Rigorous testing has not been performed. Be advised that duplication is performed with cp, which ignored the resource fork in early versions of Mac OS X. Therefore, Mac OS X 10.4 is strongly recommended for compatibility with all files.

Download FinderOpenAs.scpt.zip 3.4K

I suggest saving the script in ~/Library/Scripts/Applications/Finder and assigning it the keyboard shortcut Shift-Command-O via FastScripts.

Posted on Friday, August 17th, 2007.

Archive Yojimbo Bookmarks

Yojimbo can catalog bookmarks as well as web archives, which are basically local copies of web sites. This script creates web archives from existing bookmarks you select.

tell application "Yojimbo"
-- get the selected items, if any
 set _items to selection
 if _items is missing value then return

-- archive all the selected bookmark items
 repeat with _item in _items
  if class of _item is bookmark item then

-- bookmark properties the archive should inherit
   set _name to name of _item
   set _url to location of _item
   set _tags to tags of _item

-- archive the bookmarked page
   try
    set _archive to make new web archive item with contents _url with properties {name:_name}
    add tags _tags to _archive
   end try

end if
 end repeat
end tell

Download ArchiveYojimboBookmarks.scpt.zip 1.1 3k

Install the script in ~/Library/Scripts/Applications/Yojimbo. The script does not check whether there is already a web archive for the bookmarked location, but it could be done.

Posted on Sunday, July 15th, 2007.

Bookmark in Yojimbo 1.2

A new version of my Bookmark in Yojimbo script is available. It now checks for duplicate bookmarks and is compatible with Firefox. I use this daily.

Posted on Friday, May 11th, 2007.

Backdate Yojimbo Import

When you use this script to import files into Yojimbo, the imported items are automatically assigned the creation and modification dates of the original file (Yojimbo normally records the date of import as the creation date for imported items). Now you can easily preserve the chronological relationship between imported files.

This script is based on the similar Backdate Yojimbo Items script I wrote a few days ago, which is better for isolated corrections than bulk backdating. The same warnings about unsupported database manipulations apply.

Download Script: BackdateYojimboImport.scpt.zip (13k)

Download Droplet: BackdateYojimboImport.app.zip (35k)

Both versions work exactly the same, except that you can drag files (or folders) onto the droplet icon to import them (or their contents). The droplet appears in the Dock when invoked, whereas the script version runs transparently. A good place to install the script is ~/Library/Scripts/Applications/Yojimbo/.

When you invoke the script, a file chooser will appear. You can select multiple files to import by Shift- or Command-clicking. (If you would rather select folders, look at the code. It is a trivial change.) The backdated timestamps will not appear in Yojimbo until you restart the application.

Posted on Wednesday, May 9th, 2007.

Backdate Yojimbo Items

An issue that has recently arisen on the Yojimbo mailing list is that imported items are considered created at the time of import. This is logical, but some people would prefer to retain the creation date of the original file. Enter “Backdate Items,” an AppleScript for Yojimbo that gives you the ability to change the creation date of existing items:

Backdate Yojimbo Items Dialog Screenshot

A word of warning: this script modifies Yojimbo’s database directly using sqlite3. This is quite certainly an unsupported way to manipulate your data. In fact, Apple clearly states that Core Data files like this should not be tinkered with:

While it is easy enough to look under the covers and see what is going on with the XML and SQLite data formats, you should never modify the data in these files yourself.

But I tinker. If you do, too, please back up your ~/Library/Application Support/Yojimbo/Database.sqlite file first. Consider yourself warned that this script could potentially mangle that database.

Download Backdate Yojimbo Items Script 1.2 (11k)

Install the script in ~/Library/Scripts/Applications/Yojimbo/. Usage:

  1. Select some items in Yojimbo’s list pane.
  2. Invoke the Backdate Items script.
  3. Enter the desired date and time in any supported format.
  4. Click “Creation” or “Creation & Modification” to reset the corresponding timestamps.
  5. Changes will not be visible until you restart Yojimbo. You may backdate more than once before restarting Yojimbo, but don’t edit a backdated item until you’ve restarted Yojimbo or your changes may be lost.

Examine the script for more information about how it works. The SQLite Database Browser can also be used for this purpose, but you’ll have to manually convert dates to seconds since January 1, 2001 00:00:00 GMT (the NSDate epoch). With any luck, the option to preserve creation dates will eventually be added to Yojimbo’s import facility and this hack can be retired.

Posted on Monday, May 7th, 2007.

GraphicConverter Information Window

Currently, GraphicConverter’s image “Information” window is only visible when GraphicConverter is in the foreground. It is difficult to consult this information when working in another application.

As an interim solution, this AppleScript displays a subset of that information in a Growl notification window (or in an alert, if Growl is not installed). The notification window remains visible in all applications until you dismiss it with a click.

GraphicConverter Global Info Notification Window

Download Global Image Info Script (5k)

Put the script in ~/Library/Application Support/GraphicConverter/Scripts/ (for GraphicConverter’s script menu) or ~/Library/Scripts/Applications/GraphicConverter/ (for FastScripts or the standard script menu). Select the “Global Image Info” item from the corresponding menu to display the information for the frontmost image.

Posted on Saturday, May 5th, 2007.

Import Yojimbo Note

This little AppleScript for ThisService provides an alternative to Yojimbo’s own “Import Text” service. It creates and opens a new note item containing the currently selected text. Text style is not preserved and the note window that is opened allows you to promptly edit the note’s name or tags.

Download Yojimbo Note Service (33k)

The unzipped service goes in ~/Library/Services/. You can assign a keyboard shortcut with Service Scrubber. Here is the actual AppleScript:

on process(_selection)
 tell application "Yojimbo"
  activate
  -- could display a dialog prompting user to name/tag note
  set _item to make new note item with contents _selection
  open location "x-yojimbo-item://" & (get id of _item)
 end tell
end process

Posted on Friday, May 4th, 2007.