DekGenius.com
Team LiB   Previous Section   Next Section
Folder Actions

Syntax

(* 
display a dialog whenever a certain folder is opened. The f variable 
contains an alias to the folder that was opened.
 *)
on opening folder f
   tell application "Finder"
      activate
      display dialog ("You opened " & (name of f)) giving up after 10
   end tell
end opening folder

Dictionary commands for Folder Actions Suite

opening folder alias

This command is used as a subroutine or handler, in the form of:

on opening folder theFolder...end opening folder

The theFolder variable contains an alias to the folder. The subroutine definition

on opening folder...

can then access elements of the folder by using Finder commands.

closing folder window for alias

Use this command as part of a subroutine definition for handlers that trigger when attached folder windows are closed:

on closing folder window for theFolder...end closing folder
window for

The theFolder variable contains an alias to the attached folder. This code example backs up all files in a folder to a backup disk when the folder window is closed:

on closing folder window for theFolder
   tell application "Finder"
      try
         activate
         (* make the backup folder if it doesn't exist *)
         if not (exists (folder "mybackup" of disk "backup")) then
            set backupFolder to (make new folder at disk "backup"¬
            with  properties {name:"mybackup"})
         else
            set backupFolder to (folder "mybackup" of disk "backup")
         end if
         (* get a list of the files of the attached folder *)
         set f to (files of theFolder)
         (* only do this if the folder is not empty *)
         if (count of f) > 0 then
            repeat with fl from 1 to (length of f) (* duplicate each file to 
the backup folder *)
               duplicate (item fl of f) to backupFolder replacing yes
            end repeat
         end if
      on error errmesg
         display dialog "An error: " & errmesg
         return -- return empty-handed if there was an error
      end try
      display dialog "backup complete!"
   end tell
end closing folder window for

moving folder window for alias

You can have a script execute when a folder is moved using this command. The syntax would be:

on moving folder window for theFolder from rec...end moving folder window for

The variable theFolder (or whatever name you give it) receives an alias to the folder. The variable rec receives a list of coordinates that represent the top left and top right corners of the screen space the window occupied before it was moved. The next code example gets and displays the coordinates of the window (in the form of "10 : 50 : 370 : 500") stored in rec. The windows that have the attached scripts have to be open in the Finder for the "moving folder window for" and "adding folder items to" folder actions to execute properly.

from bounding rectangle

The from labeled parameter gives whatever variable you supply with it a rectangle value, as in {10,50,370,500} (basically a list of integers). For example:

on moving folder window for tf from rec
   set old_delim to text item delimiters
   set text item delimiters to " : "
   display dialog (rec as text)
   (* set text item delimiters back to empty string default *)
   set text item delimiters to old_delim
end moving folder window for

adding folder items to alias

This command is triggered when items are added to an open window that has one of these folder-action types attached to it (this folder action only works when the attached folder window is open). The following example displays a count of the number of folder items every time a new one is added to the directory. This is just a folder-action functionality example; you might want to log similar folder activity, but you normally would not want to display a dialog every time something happened with a folder, unless you want to antagonize users:

on adding folder items to f
   tell application "Finder"
      activate
      set fcount to (count files of f)
      display dialog ("there are now " & fcount &¬
         " files in the folder " & (name of f)) giving up after 10
   end tell
end adding folder items to

removing folder items from alias

This subroutine is executed when items are removed from an attached folder. You use it in the form of:

on removing folder items from theFolder after losing alias_list...end removing folder items from

The theFolder variable (or whatever name you give it) contains an alias of the folder. The alias_list variable contains a list of aliases referring to the items that were removed from the folder. This next example admonishes the user after an item is removed from the folder.

after losing list of aliases

This labeled parameter contains a list of aliases representing the items that were removed from the folder. This code demonstrates this parameter:

on removing folder items from theFolder after losing alias_list
   tell application "Finder"
     display dialog "Removing " & ((item 1 of alias_list) as &¬
      text) & " from " & (name of theFolder) &¬
      " is strictly forbidden!"
   end tell
end removing folder items from

Dictionary commands for Folder Actions extension

run

This command runs the Folder Actions server. See quit.

attach action to folder alias

Attach a folder action to a folder using this command:

attach action to fol_alias using script alias

The fol_alias variable contains an alias to a folder. The script_alias variable is an alias to the AppleScript that will be attached to the folder. The Example section lets the user choose a folder to attach actions to.

using alias

Use this labeled parameter to specify the script that will be attached to the folder. The script itself is stored in an alias variable or in a literal alias:

using script (alias "macintosh hd:desktop folder:moveApplet")

remove action from alias

You can script the removal of a folder action from a folder with this command. You have to identify the folder with an alias variable or a literal alias.

action number integer

This labeled parameter specifies by index number which action to remove from the folder (if there is more than one attached action). For example, if you want to remove the second folder action, then use:

action number 2

In Folder Actions 1.5.5, an extension that installs with Mac OS 9.1, the action number parameter has been changed to "using action number."

action name string

As an alternative, you can specify the name of the script to remove, as in: action name "moveScript". The name of the attached script also shows up in the contextual menu (attained by Control-clicking the folder) under the menu item "Remove a folder action."

set f_alias to¬
(choose folder with prompt¬
"choose a folder, cleanse its action")
tell application "Folder Actions"
   remove action from f_alias action number 2
end tell

edit action of alias

You can open up an attached script in Script Editor by using code such as:

edit action of theFolder action name "moveScript"

Chapter 2 is devoted to Script Editor.

action number integer

Use this labeled parameter to specify the index number of the attached action:

action number 2

action name string

You can specify the name of the action to edit with this labeled parameter:

action name "myAction"

attached scripts alias

You can find out if a folder has any attached scripts by passing the folder as an alias to this command:

tell app "Folder Actions" to attached scripts folder_alias

The folder_alias variable (or whatever you name it) contains an alias to the folder you are examining for attached scripts. This command returns a list. Each member of the list is a list containing a file alias for the attached script. The return value looks like:

{{alias "Macintosh HD:Desktop Folder:moverScript"}}

Yes, for some reason this command returns a list inside of another list.

quit

This command quits the Folder Actions server. See run and the following example.

Examples

set fol to choose folder with prompt¬
"Choose the folder to attach the action to"
set theAction to alias "Macintosh HD:Desktop Folder:moverScript" (* this script
will be attached to the folder the user chooses *)
tell application "Folder Actions"
   (*start the Folder Actions server; it is not strictly necessary to use run 
or quit *)
   run 
   attach action to fol using theAction
   quit
end tell


    Team LiB   Previous Section   Next Section