News:

Choose a design and let our professionals help you build a successful website   - ITAcumens

Main Menu

10 AppleScripts to make you love your Mac

Started by dhilipkumar, May 25, 2009, 02:01 PM

Previous topic - Next topic

dhilipkumar

A few caveats

This was very handy when I couldn't figure out on my own the proper AppleScript for TextWrangler's search and replace. For example, I use this AppleScript snippet to delete all percentages in a report that are formatted with a space followed by one or two digits followed by a period followed by one digit followed by a percent sign -- as in 5.3% or 23.8%:

tell application "TextWrangler" to replace "\\s\\d{1,2}\\.\\d\\%" using "" searching in text 1 of text document 1 options {search mode:grep, starting at top:true, wrap around:false, backwards:false, case sensitive:false, match words:false, extend selection:false}


A final warning: AppleScript is not particularly well suited for a lot of text manipulation. There's no built-in support for regular expressions; there's not even a simple search-and-replace function as part of core AppleScript.

AppleScript can also incorporate more powerful commands from Perl, Ruby, Unix or anything else that can be accessed via a shell script, and then assign the results to a variable.

dhilipkumar

Search for any term in your clipboard or elsewhere

This is one of my faves: Take any term you've copied into your clipboard (command-C), regardless of the app you're in, and Safari displays search results on that term

To use:

Copy the code.
Open your script editor (you'll find it in your Applications/AppleScript folder).
Paste the code into the larger top portion of your script editor.
Save the file as a script in your Library/Scripts folder. (Note: If you open the AppleScript utility in the Applications/AppleScript folder, you can have your script menu display in the top menu bar.)

CODE
#This script searches world.co for the contents of text in the clipboard.

set url1 to "http://www.computerworld.com/action/googleSearch.do?cx=014839440456418836424%3A-khvkt1lc-e&q="
set url2 to "&x=0&y=0&cof=FORID%3A9#1214"

tell application "System Events"
        set myquery to the clipboard
        end tell

-- changes space to plus using function at end of file

set thequery to SaR(myquery, " ", "+")

tell application "Safari"
        activate
        tell application "System Events"
                tell process "Safari"
                        click menu item "New Tab" of menu "File" of menu bar 1

                end tell
        end tell
        set theURL to url1 & thequery & url2
        set URL of document 1 to theURL
end tell

-- handler (function) for search and replace
-- (posted by James Nierodzik at macscripter.net)
on SaR(sourceText, findText, replaceText)
        set {atid, AppleScript's text item delimiters} to {AppleScript's text item delimiters, findText}
        set tempText to text items of sourceText
        set AppleScript's text item delimiters to replaceText
        set sourceText to tempText as string
        set AppleScript's text item delimiters to atid
        return sourceText
end SaR



If you want scripts that will search for terms in your clipboard at other sites, MacScripter has AppleScript versions posted for searching highlighted text on Google and Wikipedia (within Safari only). Download and install in your Scripts folder.


source : computerworld

dhilipkumar

Targeted backups

Although Time Machine will do automated backups for those with modern versions of OS X, some readers might want an easy way to, say, keep all files related to a critical project together for an additional "in case of catastrophe" backup, or perhaps for something that could be easily downloaded to a USB drive.

tell application "Finder" to duplicate (every item in folder "Documents" of home whose modification date comes after (current date) - 7 * days) to folder "backup_docs" of disk "Backups" with replacing

select files to back up based on "everything changed since I last ran this script," here's a quick modification created

tell application "Finder"
        activate
        -- Configure source and destination folders
        set source_folder to folder "Documents" of home
        set destination_folder to folder "docs" of disk "BackupDisk"

        -- Create a config file 1st time script runs to keep track of latest time run
        if not (exists file "backup_script_config.txt" in source_folder) then
                make new document file at source_folder with properties {name:"backup_script_config.txt"}
                duplicate every item in source_folder to destination_folder with replacing
        else
                set last_run to modification date of file "backup_script_config.txt" in source_folder
                duplicate (every item in source_folder whose modification date comes after last_run) to destination_folder with replacing

                -- Update config file modification date
                set the open_file to open for access file ((document file "backup_script_config.txt" of source_folder) as string) with write permission
                        set eof of the open_file to 0
                        write last_run to the open_file starting at eof
                        close access the open_file
        end if
end tell


dhilipkumar

Immediate backup on import

This script is designed for tasks like saving photographic images, where (conscientious) users might want to immediately back up files as soon as they're imported. Apple offers a sample script for download, which you set up after you enter source and destination folders; it then continues to run in the background.

bit of a performance lag when I played with it, but for some, the security of assured immediate backup is worth a bit of sluggishness.

Check your IP address
A simple IP utility from ScriptBuilders (accessible from the Scriptbuilders site) lets you quickly check your external IP address and copy it to your clipboard for tasks such as setting up a VPN or supporting a remote access connection.

source: computerworld

dhilipkumar

Add lyrics to iTunes

There are hundreds of iTunes AppleScripts out there on sites such as Doug's AppleScripts for iTunes. For example, you can make tracks "bookmarkable" so they resume playing wherever they left off or pick items on an iPod so they're copied into an iTunes folder.

iTunes volume fade-in and fade-out
For audiophiles who prefer that their music fade in when starting up and fade out when a tune is paused or restarted manually in mid-play, O'Reilly's MacDevCenter site offers several iTunes scripts that do just that, either with or without dialog boxes.

Quick image manipulation

fair number of AppleScript users would be surprised to learn that they don't need an app like Photoshop in order to script things like rotating or resizing an image.

CODE
set this_file to choose file without invisibles
try
tell application "Image Events"
-- start the Image Events application
launch
-- open the image file
set this_image to open this_file
-- perform action
scale this_image by factor 0.5
-- save the changes
save this_image with icon
-- purge the open image data
close this_image
end tell
on error error_message
display dialog error_message
end try



dhilipkumar

Photoshop gives you much more control over how images are sized, so this isn't a great technique to size images for printing or publication. However, for a quick e-mail attachment, it should be fine. There are also versions on the same Web page to size for maximum width or height, with user input setting the parameters.

set this_file to choose file without invisibles
set the target_length to 640
repeat
display dialog "Enter the target length " & "and choose the dimension of the " & "image to scale to the target length:" default answer target_length buttons {"Cancel", "Height", "Width"}
copy the result as list to {target_length, target_dimension}
try
  set the target_length to the target_length as number
  if the target_length is greater than 0 then
   exit repeat
  else
   error
  end if
on error
  beep
end try
end repeat
try
tell application "Image Events"
  -- start the Image Events application
  launch
  -- open the image file
  set this_image to open this_file
  -- get dimensions of the image
  copy dimensions of this_image to {W, H}
  -- determine scale length
  if the target_dimension is "Height" then
   if W is less than H then
    set the scale_length to the target_length
   else
    set the scale_length to (W * target_length) / H
    set the scale_length to
round scale_length rounding as taught in school
   end if
  else -- target dimension is Width
   if W is less than H then
    set the scale_length to (H * target_length) / W
    set the scale_length to
round scale_length rounding as taught in school
   else
    set the scale_length to the target_length
   end if
  end if
  -- perform action
  scale this_image to size scale_length
  -- save the changes
  save this_image with icon
  -- purge the open image data
  close this_image
end tell
on error error_message
display dialog error_message
end try