Applescript folder actions, dropbox, and sleep

Discussion in 'Mac Programming' started by VideoBeagle, Jun 6, 2012.

  1. macrumors 6502a

    Joined:
    Aug 17, 2010
    Location:
    App Q&A testing by request.
    #1
    I have an applescript folder action that triggers when a text file is put in a folder in Dropbox. (activates a program, processes the text)


    When I do extensive testing at home using the folder locally, accessing it from other computers on my home network, using the dropbox website, using an ipad app, and even having friends elsewhere who are shared to the folder use it, it works as it's supposed to.

    But I'm getting less than positive results when I put files in it when I use the drop box website or ipad app from work during the day. Either it doesn't work like it's supposed to, missing steps in the script, or it doesn't work at all.

    As I know the code of the script works, the problem has to be something else.
    From a chat server I stay connected to, I know it's not a network interruption (and that would delay execution thru dropbox, not break it).

    The only real difference I can think of is that as I'm not using the computer, it's in sleep mode, or at least spun down... (I'm not sure what my power settings are at the moment). Could that be causing issues with the "folder action" part of the script?

    After the script starts going, it activates a program, then has a delay of .5 seconds, and then issues a Cmd N"
    Code:
    tell window 1
    					delay 0.5
    					keystroke "n" using command down
    Might the problem be that the computer is asleep, it wakes when the dropbox file is created, but while it's waking (it's a g5 with leopard, so not super quick) it's missing commands? (does that even make sense?) and maybe addding a longer delay at the very start might solve it?



    (*The script is discussed in another thread...I wanted to make this thread to focus on the folder action triggering problem)
     
  2. thread starter macrumors 6502a

    Joined:
    Aug 17, 2010
    Location:
    App Q&A testing by request.
    #2
    I'm currently trying the script with a delay 30 after the trigger and added delays between the key commands hoping that gives the computer enough time to get roaring.

    Code:
    on adding folder items to this_folder after receiving these_items
    	delay 30
    	repeat with i from 1 to number of items in these_items
    		
    Code:
    	                          tell window 1
    						delay 5
    						keystroke "n" using command down
    						--delay 3
    						keystroke "v" using command down
    						set position to {xx, yy}
    
    Given the lack of response of similar issues from others, though, I'm assuming the problem lies with my specific G5/Leopard OS rather than this being a common issue.
     
  3. thread starter macrumors 6502a

    Joined:
    Aug 17, 2010
    Location:
    App Q&A testing by request.
    #3
    Hmm.. It's still very inconsistent on triggering. Do other folks using dropbox and folder actions have 0 issues?
     
  4. kryten2, Jun 12, 2012
    Last edited: Jun 12, 2012

    macrumors 6502a

    Joined:
    Mar 17, 2012
    Location:
    Belgium
    #4
    Instead of a folder action you can also try launchd and a property list file with the WatchPaths key. Property lists are Apple's standard configuration file format. Please note. Property list files are expected to have their name end in ".plist". I put mine in /Users/yourusername/Library/LaunchAgents. Type man launchd.plist in Terminal for more info about the format and keys of the plist file. There's an app called Lingon that does all the work for you or you can create them manually like I do. To load your plist do launchctl load Library/LaunchAgents/name.of.your.plist in Terminal. I think Lingon also does this but It's been a while since I've used it. An example of a plist and I'll attach the script that goes with it.

    Code:
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" \
    "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
            <key>Label</key>
            <string>com.test.downloadsmove</string>
            <key>Program</key>
            <string>/usr/bin/osascript</string>
    	<key>ProgramArguments</key>
    	<array>
    		<string>osascript</string>
    		<string>/Users/test/Library/Scripts/Move downloaded files to subfolder launchd script.scpt</string>
    	</array>
            <key>WatchPaths</key>
            <array>
            <string>/Users/test/Downloads</string>
            </array>
    </dict>
    </plist>
    
    This key looks promising :

    StartInterval <integer>
    This optional key causes the job to be started every N seconds. If the
    system is asleep, the job will be started the next time the computer
    wakes up. If multiple intervals transpire before the computer is woken,
    those events will be coalesced into one event upon wake from sleep.

    It would be best if you left the watched folder empty after processing the files. Just like you would with a folder action. To quote the Applescript Language Guide :

     

    Attached Files:

  5. thread starter macrumors 6502a

    Joined:
    Aug 17, 2010
    Location:
    App Q&A testing by request.
    #5
    Thanks! I'll look into this!
    (Obviously this is for the stickies script you've been invaluable in helping me with in the other thread:p )
     

Share This Page