Script Editor to Automator Issue

Discussion in 'Mac Programming' started by thriftinkid, Apr 16, 2008.

  1. macrumors regular

    Joined:
    Mar 24, 2008
    #1
    I have had a few scripts now that work fine when I run the in script editor, but they don't run properly in automator. Automator has the ability to run applescript as part of a work flow by copying as pasting your applescript directly into Automator. I haven't had errors everytime I do it. But there are certain scripts that have had errors that have forced me to do some adjustments. Any ideas why? This recent script gave me the following error after copying and pasting it into an automator workflow.

    Syntax Error
    No result was returned from some part of this expression.


    Here is the script:

    (including automators on run, return input, and end tell commands added by automator within workflow.)

    Code:
    on run {input, parameters}
    	
    	tell application "Finder"
    		set theFolder to "Macintosh HD:Users:John:Desktop:Finished" as alias
    		set theList to name of (every file in theFolder)
    	end tell
    	
    	repeat with i from 1 to (number of items of theList)
    		set theName to (item i of theList)
    		set item i of theList to ("http://www.mywebsite.com/mainfolder/" & theName)
    	end repeat
    	set theText to "
    
    "
    	repeat with i from 1 to (number of items of theList)
    		set theText to (theText & (item i of theList) & "
    
    ")
    	end repeat
    	
    	tell application "TextEdit"
    		activate
    		make new text document
    		set the text of the front document to theText
    		
    	end tell
    	
    	return input
    end run
     
  2. thread starter macrumors regular

    Joined:
    Mar 24, 2008
    #2
    It seemed it was having a particular problem with this part of the code, but I'm not sure:

    Code:
    repeat with i from 1 to (number of items of theList)
    		set theText to (theText & (item i of theList) & "
     
  3. macrumors 68040

    lee1210

    Joined:
    Jan 10, 2005
    Location:
    Dallas, TX
    #3
    I have no idea, but getting the number of items in theList was no longer working. This seems to:

    Code:
    on run {input, parameters}
    	
    	tell application "Finder"
    		set theFolder to "Macintosh HD:Users:lee:Desktop:Finished" as alias
    		set theList to name of (every file in theFolder)
    	end tell
    	
    	set theText to "
    
    "
    
    	repeat with theName in theList
    		set theText to (theText & ("http://www.mynetwork.tv/vue/" & theName) & "
    		
    ")
    	end repeat
    	
    	set input to theText
    	
    	return input
    	
    end run
    This passes the generated text to the next step in the automator workflow. That may not be what you want to do, but writing it to the text file is sort of a dead-end in the workflow, unless there's some way to tell the next step where a document is, etc.

    -Lee
     
  4. macrumors 6502a

    lancestraz

    Joined:
    Nov 27, 2005
    Location:
    RI
    #4
    For some crazy reason, Automator doesn't like the phrase "number of items in" so use "count" instead. Also, the word "text" should be omitted from the line "make new text document" in the TextEdit block. Tweaked the TextEdit "make new document" code a bit so that if TextEdit is not active when this script is run it will not create two documents.

    Code:
    on run {input, parameters}
    	
    	tell application "Finder"
    		set theFolder to "Macintosh HD:Users:John:Desktop:Finished" as alias
    		set theList to name of (every file in theFolder)
    	end tell
    	
    	repeat with i from 1 to (count theList)
    		set theName to (item i of theList)
    		set item i of theList to ("http://www.mywebsite.com/mainfolder/" & theName)
    	end repeat
    	set theText to "
    
    "
    	repeat with i from 1 to (count theList)
    		set theText to (theText & (item i of theList) & "
    
    ")
    	end repeat
    	
    	tell application "TextEdit"
    		activate
    		if (front document exists) = true then
    			if (text of the front document) ≠ "" then
    				make new document
    			end if
    		else
    			make new document
    		end if
    		set the text of the front document to theText
    	end tell
    	
    	return input
    end run
     
  5. macrumors newbie

    Joined:
    Feb 12, 2006
    Location:
    Amsterdam
    #5
    Wow! That really saved my day. Sometimes (often?) these idiosyncrasies of Apple Script drive me crazy :eek:.

    Thanks for giving us the solution! :)
     

Share This Page