open created folder

I could use some help with this:

I have a script that creates predefinded folders(user action)
It ltes you choose where to create the folder and subfolders
When done it opens the folder in witch the parentfolder was created
What I want is to have the script open the parentfolder.

This is the script: (Some of it is in Dutch in case you might wonder)

set JobNumber to "Wat is het ordernummer (zie orderbon)?"
set JobDescription to "Wat is de klantnaam (zie orderbon)?"
set tempNumber to display dialog JobNumber default answer ""
set JobNumberEntered to text returned of tempNumber
set tempDescription to display dialog JobDescription default answer ""
set JobDescriptionEntered to text returned of tempDescription

set myChoices to {"1. Desktop", "2. Beursdrukkerij", "3. Leenbakker", "4. Schuitema", "5. Overige"}
set myDestinations to {path to desktop folder, "DTP:Beursdrukkerij:orders", "DTP:Leenbakker:orders", "DTP:Schuitema:orders", "DTP:Overige:orders"}
set theChosen to (choose from list myChoices) as string
if theChosen is "false" then return
set theChoiceNum to character 1 of theChosen as number as string
set myChosenDestination to item theChoiceNum of myDestinations

make_folders(myChosenDestination, JobNumberEntered, JobDescriptionEntered)

on make_folders(myChosenDestination, JobNumberEntered, JobDescriptionEntered)
	tell application "Finder"
		set parentFolder to make new folder at myChosenDestination with properties {name:JobNumberEntered & "_" & JobDescriptionEntered}
		make new folder at parentFolder with properties {name:JobNumberEntered & "_Illustraties"}
		make new folder at parentFolder with properties {name:JobNumberEntered & "_Diverse"}
		make new folder at parentFolder with properties {name:JobNumberEntered & "_Photoshop"}
		make new folder at parentFolder with properties {name:JobNumberEntered & "_Aangeleverd"}
		make new folder at parentFolder with properties {name:JobNumberEntered & "_Opmaak"}
		make new folder at parentFolder with properties {name:JobNumberEntered & "_Highres"}
		make new folder at parentFolder with properties {name:JobNumberEntered & "_Highres_klant"}
		make new folder at parentFolder with properties {name:JobNumberEntered & "_Fonts"}
		make new folder at parentFolder with properties {name:JobNumberEntered & "_Postscript"}
		make new folder at parentFolder with properties {name:JobNumberEntered & "_PDF_certified"}
		make new folder at parentFolder with properties {name:JobNumberEntered & "_PDF_scherm"}
		make new folder at parentFolder with properties {name:JobNumberEntered & "_Preps"}
		open myChosenDestination
	end tell
end make_folders

Just a small adjustment:


set JobNumber to "Wat is het ordernummer (zie orderbon)?"
set JobDescription to "Wat is de klantnaam (zie orderbon)?"
set tempNumber to display dialog JobNumber default answer ""
set JobNumberEntered to text returned of tempNumber
set tempDescription to display dialog JobDescription default answer ""
set JobDescriptionEntered to text returned of tempDescription

set myChoices to {"1. Desktop", "2. Beursdrukkerij", "3. Leenbakker", "4. Schuitema", "5. Overige"}
set myDestinations to {path to desktop folder, "DTP:Beursdrukkerij:orders", "DTP:Leenbakker:orders", "DTP:Schuitema:orders", "DTP:Overige:orders"}
set theChosen to (choose from list myChoices) as string
if theChosen is "false" then return
set theChoiceNum to character 1 of theChosen as number as string
set myChosenDestination to item theChoiceNum of myDestinations

open make_folders(myChosenDestination, JobNumberEntered, JobDescriptionEntered) -- opened here


on make_folders(myChosenDestination, JobNumberEntered, JobDescriptionEntered)
	tell application "Finder"
		set parentFolder to make new folder at myChosenDestination with properties {name:JobNumberEntered & "_" & JobDescriptionEntered}
		make new folder at parentFolder with properties {name:JobNumberEntered & "_Illustraties"}
		make new folder at parentFolder with properties {name:JobNumberEntered & "_Diverse"}
		make new folder at parentFolder with properties {name:JobNumberEntered & "_Photoshop"}
		make new folder at parentFolder with properties {name:JobNumberEntered & "_Aangeleverd"}
		make new folder at parentFolder with properties {name:JobNumberEntered & "_Opmaak"}
		make new folder at parentFolder with properties {name:JobNumberEntered & "_Highres"}
		make new folder at parentFolder with properties {name:JobNumberEntered & "_Highres_klant"}
		make new folder at parentFolder with properties {name:JobNumberEntered & "_Fonts"}
		make new folder at parentFolder with properties {name:JobNumberEntered & "_Postscript"}
		make new folder at parentFolder with properties {name:JobNumberEntered & "_PDF_certified"}
		make new folder at parentFolder with properties {name:JobNumberEntered & "_PDF_scherm"}
		make new folder at parentFolder with properties {name:JobNumberEntered & "_Preps"}
		return parentFolder -- added this
	end tell
end make_folders

Hé Adam,

Thanks man
That simple. shame on me :cool:

Just another question
How do I get a subfolder in the folder that was created with for example this:

	set parentFolder to make new folder at myChosenDestination with properties {name:JobNumberEntered & "_" & JobDescriptionEntered}
		make new folder at parentFolder with properties {name:JobNumberEntered & "_Illustraties"}

So; Create the mainfolder (parentfolder), create the subfolder and now create another subfolder in the first subfolder

Can it be done?

Hi there,
using the variable for the sub-folder that you want to create a new su-folder will do it.

set parentFolder to make new folder at myChosenDestination with properties {name:JobNumberEntered & "_" & JobDescriptionEntered}
	set sub_folder_1 to make new folder at parentFolder with properties {name:JobNumberEntered & "_Illustraties"}
	set sub_folder_2 to make new folder at sub_folder_1 with properties {name:JobNumberEntered & "_Illustraties"}

To summarize, retepp: saying “set A to make new …” sets the variable “A” to a reference to whatever you have just made. That variable can be used in subsequent statements requiring a location reference, such as in the “at” portion of a “make new … at A”, which puts the second made item into the first one. This can be cascaded to substantial depth.

Thanks for the input, subfolders are okay now :smiley:

i have several of the script now to create different folders at several places with different subfolder.
Can I combine these into one script so that I can choose witch settings I want to use.

Here are two of them:
The first one is a generic jobfolder the second one is more specific
There are alltogether four scripts so it has to be done through a list

set JobNumber to "Wat is het ordernummer (zie orderbon)?"
set JobDescription to "Wat is de klantnaam (zie orderbon)?"
set tempNumber to display dialog JobNumber default answer ""
set JobNumberEntered to text returned of tempNumber
set tempDescription to display dialog JobDescription default answer ""
set JobDescriptionEntered to text returned of tempDescription

set myChoices to {"1. Desktop", "2. Beursdrukkerij", "3. Leenbakker", "4. Schuitema", "5. Overige"}
set myDestinations to {path to desktop folder, "DTP:Beursdrukkerij:orders", "DTP:Leenbakker:orders", "DTP:Schuitema:orders", "DTP:Overige:orders"}
set theChosen to (choose from list myChoices) as string
if theChosen is "false" then return
set theChoiceNum to character 1 of theChosen as number as string
set myChosenDestination to item theChoiceNum of myDestinations

open make_folders(myChosenDestination, JobNumberEntered, JobDescriptionEntered) -- opened here


on make_folders(myChosenDestination, JobNumberEntered, JobDescriptionEntered)
	tell application "Finder"
		set parentFolder to make new folder at myChosenDestination with properties {name:JobNumberEntered & "_" & JobDescriptionEntered}
		make new folder at parentFolder with properties {name:JobNumberEntered & "_illustraties"}
		make new folder at parentFolder with properties {name:JobNumberEntered & "_diverse"}
		make new folder at parentFolder with properties {name:JobNumberEntered & "_photoshop"}
		make new folder at parentFolder with properties {name:JobNumberEntered & "_aangeleverd"}
		make new folder at parentFolder with properties {name:JobNumberEntered & "_opmaak"}
		make new folder at parentFolder with properties {name:JobNumberEntered & "_highres"}
		make new folder at parentFolder with properties {name:JobNumberEntered & "_highres_klant"}
		make new folder at parentFolder with properties {name:JobNumberEntered & "_fonts"}
		make new folder at parentFolder with properties {name:JobNumberEntered & "_postscript"}
		make new folder at parentFolder with properties {name:JobNumberEntered & "_pdf_certified"}
		make new folder at parentFolder with properties {name:JobNumberEntered & "_pdf_scherm"}
		make new folder at parentFolder with properties {name:JobNumberEntered & "_pdf_op_stand"}
		make new folder at parentFolder with properties {name:JobNumberEntered & "_Preps"}
		make new folder at parentFolder with properties {name:JobNumberEntered & "_ps-icf & jobs staan op BRSQ.."}
		return parentFolder
	end tell
end make_folders

tell application "Finder"
	activate
	set current view of Finder window 1 to list view
	set bounds of Finder window 1 to {447, 166, 1101, 501}
end tell
set JobDescription to "Wat is het weekummer (zie orderbon)?"
set tempDescription to display dialog JobDescription default answer ""
set JobDescriptionEntered to text returned of tempDescription

set myDestinations to {"DTP:Leenbakker:orders"}

open make_folders(myDestinations, JobDescriptionEntered)

on make_folders(myChosenDestination, JobDescriptionEntered)
	tell application "Finder"
		set parentFolder to make new folder at myChosenDestination with properties {name:"Leenbakker_WK_" & JobDescriptionEntered}
		set sub_folder_1 to make new folder at parentFolder with properties {name:"combi"}
		set sub_folder_2 to make new folder at sub_folder_1 with properties {name:"aangeleverd"}
		set sub_folder_2 to make new folder at sub_folder_1 with properties {name:"opmaak"}
		set sub_folder_2 to make new folder at sub_folder_1 with properties {name:"pdf_certified"}
		set sub_folder_2 to make new folder at sub_folder_1 with properties {name:"pdf_scherm"}
		
		set sub_folder_1 to make new folder at parentFolder with properties {name:"frans"}
		set sub_folder_2 to make new folder at sub_folder_1 with properties {name:"aangeleverd"}
		set sub_folder_2 to make new folder at sub_folder_1 with properties {name:"opmaak"}
		set sub_folder_2 to make new folder at sub_folder_1 with properties {name:"pdf_certified"}
		set sub_folder_2 to make new folder at sub_folder_1 with properties {name:"pdf_scherm"}
		
		set sub_folder_1 to make new folder at parentFolder with properties {name:"luxemburg"}
		set sub_folder_2 to make new folder at sub_folder_1 with properties {name:"aangeleverd"}
		set sub_folder_2 to make new folder at sub_folder_1 with properties {name:"opmaak"}
		set sub_folder_2 to make new folder at sub_folder_1 with properties {name:"pdf_certified"}
		set sub_folder_2 to make new folder at sub_folder_1 with properties {name:"pdf_scherm"}
		
		set sub_folder_1 to make new folder at parentFolder with properties {name:"nederlands"}
		set sub_folder_2 to make new folder at sub_folder_1 with properties {name:"aangeleverd"}
		set sub_folder_2 to make new folder at sub_folder_1 with properties {name:"opmaak"}
		set sub_folder_2 to make new folder at sub_folder_1 with properties {name:"pdf_certified"}
		set sub_folder_2 to make new folder at sub_folder_1 with properties {name:"pdf_scherm"}
		
		set sub_folder_1 to make new folder at parentFolder with properties {name:"vlaams"}
		set sub_folder_2 to make new folder at sub_folder_1 with properties {name:"aangeleverd"}
		set sub_folder_2 to make new folder at sub_folder_1 with properties {name:"opmaak"}
		set sub_folder_2 to make new folder at sub_folder_1 with properties {name:"pdf_certified"}
		set sub_folder_2 to make new folder at sub_folder_1 with properties {name:"pdf_scherm"}
		set sub_folder_2 to make new folder at sub_folder_1 with properties {name:"pdf_scherm_zonder_snijtekens"}
		set sub_folder_2 to make new folder at sub_folder_1 with properties {name:"thumbnails"}
		
		set sub_folder_1 to make new folder at parentFolder with properties {name:"waals_digitaal"}
		set sub_folder_2 to make new folder at sub_folder_1 with properties {name:"aangeleverd"}
		set sub_folder_2 to make new folder at sub_folder_1 with properties {name:"opmaak"}
		set sub_folder_2 to make new folder at sub_folder_1 with properties {name:"pdf_certified"}
		set sub_folder_2 to make new folder at sub_folder_1 with properties {name:"pdf_scherm"}
		set sub_folder_2 to make new folder at sub_folder_1 with properties {name:"pdf_scherm_zonder_snijtekens"}
		set sub_folder_2 to make new folder at sub_folder_1 with properties {name:"thumbnails"}
		
		return parentFolder
	end tell
end make_folders

tell application "Finder"
	activate
	set current view of Finder window 1 to list view
	set bounds of Finder window 1 to {447, 166, 1101, 501}
end tell

Hi,

a suggestion to have only one make_folders subroutine.
If the variable JobNumber(Entered) is empty, it creates the folders with the nested subfolders (your second script)
otherwise the folders of your first script

property subList1 : {"combi", "frans", "luxemburg", "nederlands", "vlaams", "waals_digitaal"}
property subList2 : {"aangeleverd", "opmaak", "pdf_certified", "pdf_scherm"}
property folderList : {"_illustraties", "_diverse", "_photoshop", "_aangeleverd", "_opmaak", "_highres", "_highres_klant", "_fonts", "_postscript", "_pdf_certified", "_pdf_scherm", "_pdf_op_stand", "_Preps", "_ps-icf & jobs staan op BRSQ.."}

-- first option
open make_folders(myDestinations, JobDescriptionEntered, "")
-- second option
open make_folders(myDestinations, JobDescriptionEntered, JobNumberEntered)

on make_folders(Dest, JobDescription, JobNumber)
	tell application "Finder"
		if JobNumber is "" then
			set parentFolder to make new folder at Dest with properties {name:"Leenbakker_WK_" & JobDescription}
			repeat with sub1 in subList1
				set sub_folder_1 to make new folder at parentFolder with properties {name:sub1}
				repeat with sub2 in subList2
					make new folder at sub_folder_1 with properties {name:sub2}
				end repeat
				if sub1 contains "aa" then
					make new folder at sub_folder_1 with properties {name:"pdf_scherm_zonder_snijtekens"}
					make new folder at sub_folder_1 with properties {name:"thumbnails"}
				end if
			end repeat
		else
			set parentFolder to make new folder at Dest with properties {name:JobNumber & "_" & JobDescription}
			repeat with sub in folderList
				make new folder at parentFolder with properties {name:JobNumber & sub}
			end repeat
		end if
		activate
		set current view of Finder window 1 to list view
		set bounds of Finder window 1 to {447, 166, 1101, 501}
	end tell
	return parentFolder
end make_folders

Thanks,
It’s not what I had in mind but I will check if i can fit in my other folder needs

Here’s another approach, using the Unix “mkdir” command. This is faster than the Finder and can create an entire hierarchy in a single move, using a sort of “tree” path to specify the folders and subfolders that have to be created. The advantage of this is that you only have to pass a suitable tree to the handler. You don’t need to write AppleScript code that’ll cover every eventuality.

The tree for the first script (handler ‘process1()’ in the script below) would be (with a return inserted to get the line to wrap on this Web page):

. where parentFolder will be created with 14 subfolders, each of whose names will be prefixed with “n_”.

For the second script (handler ‘process(2)’), I’ve gone with:

. where parentFolder will contain 6 subfolders, each of which will contain folders with the names “aangeleverd”, “opmaak”, “pdf_certified”, and “pdf_scherm”. Additionally, “vlaams” and “waals_digitaal” will contain folders named “pdf_scherm_zonder_snijtekens” and “thumbnails”.

Obviously, I’ve no idea what’s needed to match your other scripts.

The script below asks what kind of hierarchy to create and runs the relevant “process” handler. Each handler returns the HFS path to the parent folder to be created and the part of the Unix “tree” relating to its subfolders. This information’s then used to create the hierarchy and to open the parent folder.

You can write similar “process” handlers to match your other scripts, and update the lists ‘myChoices’ and ‘myHandlers’ accordingly.

on process1()
	set JobNumberEntered to get_input("Wat is het ordernummer (zie orderbon)?")
	set JobDescriptionEntered to get_input("Wat is de klantnaam (zie orderbon)?")
	set parentFolderName to JobNumberEntered & "_" & JobDescriptionEntered
	
	set myChoices to {"1. Desktop", "2. Beursdrukkerij", "3. Leenbakker", "4. Schuitema", "5. Overige"}
	set myDestinations to {path to desktop folder as Unicode text, "DTP:Beursdrukkerij:orders:", "DTP:Leenbakker:orders:", "DTP:Schuitema:orders:", "DTP:Overige:orders:"}
	set myChosenDestination to choose_from_list("Where do you want the folder hierarchy to be created?", myChoices, myDestinations)
	set parentFolderPath to myChosenDestination & parentFolderName
	
	set subfolderTree to "/" & JobNumberEntered & "_" & "{illustraties,diverse,photoshop,aangeleverd,opmaak,highres,highres_klant,fonts,postscript,pdf_certified,pdf_scherm,pdf_op_stand,Preps,'ps-icf & jobs staan op BRSQ..'}"
	
	return {parentFolderPath, subfolderTree}
end process1

on process2()
	set JobDescriptionEntered to get_input("Wat is het weekummer (zie orderbon)?")
	set parentFolderName to "Leenbakker_WK_" & JobDescriptionEntered
	
	set myChosenDestination to "DTP:Leenbakker:orders:"
	set parentFolderPath to myChosenDestination & parentFolderName
	
	set subfolderTree to "/{{combi,frans,luxemburg,nederlands,vlaams,waals_digitaal}/{aangeleverd,opmaak,pdf_certified,pdf_scherm},{vlaams,waals_digitaal}/{pdf_scherm_zonder_snijtekens,thumbnails}}"
	
	return {parentFolderPath, subfolderTree}
end process2

on process3()
	display dialog "Sorry. I'm not implemented yet!" buttons {"Cancel"} default button 1 with icon stop
	error number -128
end process3

on process4()
	display dialog "Sorry. I'm not implemented yet!" buttons {"Cancel"} default button 1 with icon stop
	error number -128
end process4


on get_input(msg)
	return text returned of (display dialog msg default answer "")
end get_input

on choose_from_list(myPrompt, myChoices, myResults)
	set theChosen to (choose from list myChoices with prompt myPrompt)
	if (theChosen is false) then error number -128
	
	return item (character 1 of item 1 of theChosen) of myResults
end choose_from_list

on make_folders(parentFolderPath, subfolderTree)
	do shell script ("mkdir -p " & (quoted form of POSIX path of parentFolderPath) & subfolderTree)
	
	return (parentFolderPath) as alias
end make_folders

on open_parent_folder(parentFolderPath)
	tell application "Finder"
		activate -- opened here
		tell (make new Finder window to folder parentFolderPath) to set {current view, bounds} to {list view, {447, 166, 1101, 501}}
	end tell
end open_parent_folder


-- THE MAIN SCRIPT.
global myChosenProcess -- We need a global to set to, and to reference as, a handler.

-- Prompt the user for the required process and set 'myChosenProcess' to the relevant handler.
set myChoices to {"1. Hierarchy 1", "2. Hierarchy 2", "3. Hierarchy 3", "4. Hierarchy 4"}
set myHandlers to {process1, process2, process3, process4}
set myChosenProcess to choose_from_list("What kind of folder heirarchy do you want to make? (In Dutch.)", myChoices, myHandlers)

-- Run the handler to get the relevant folder hierarchy info.
set {parentFolderPath, subfolderTree} to myChosenProcess()

-- Create the hierarchy and get an alias to its root folder.
make_folders(parentFolderPath, subfolderTree)
-- Open the window and adjust its view settings.
open_parent_folder(parentFolderPath)

Thanks for all your input folks,
Not quite sure witch approatch I will those though.
Some testing needs to be done and see how flexible the given solutions are

One more thing:
At the beginning one has to give in a jobdescription and a number
What I would like is to have a confirmation of what has been entered with the option to go back if it’s not okay.
This is what I’ve made soo far, but I can only go back once - how do Iget rid of this limitation?

set tempDescription to display dialog JobDescription default answer ""
set JobDescriptionEntered to text returned of tempDescription

display dialog "Is " & JobNumberEntered & "_" & JobDescriptionEntered & " ok?" buttons {"Terug", "Ga door"} default button 2
if the button returned of the result is "Terug" then
	set JobNumber to "Wat is het ordernummer (zie orderbon)?"
	set JobDescription to "Wat is de klantnaam (zie orderbon)?"
	set tempNumber to display dialog JobNumber default answer ""
	set JobNumberEntered to text returned of tempNumber
	set tempDescription to display dialog JobDescription default answer ""
	set JobDescriptionEntered to text returned of tempDescription
else
	set myChoices to {"1. Desktop", "2. Beursdrukkerij", "3. Leenbakker", "4. Schuitema", "5. Overige"}
	set myDestinations to {path to desktop folder, "DTP:Beursdrukkerij:orders", "DTP:Leenbakker:orders", "DTP:Schuitema:orders", "DTP:Overige:orders"}
	set theChosen to (choose from list myChoices) as string
	if theChosen is "false" then return
	set theChoiceNum to character 1 of theChosen as number as string
	set myChosenDestination to item theChoiceNum of myDestinations
	open make_folders(myChosenDestination, JobNumberEntered, JobDescriptionEntered)
end if
on make_folders(myChosenDestination, JobNumberEntered, JobDescriptionEntered)
	tell application "Finder"
		set parentFolder to make new folder at myChosenDestination with properties {name:JobNumberEntered & "_" & JobDescriptionEntered}

You can do it this way

repeat
	set JobNumber to "Wat is het ordernummer (zie orderbon)?"
	set JobDescription to "Wat is de klantnaam (zie orderbon)?"
	set tempNumber to display dialog JobNumber default answer ""
	set JobNumberEntered to text returned of tempNumber
	set tempDescription to display dialog JobDescription default answer ""
	set JobDescriptionEntered to text returned of tempDescription
	display dialog "Is " & JobNumberEntered & "_" & JobDescriptionEntered & " ok?" buttons {"Terug", "Ga door"} default button 2
	if the button returned of the result is "Ga door" then exit repeat
end repeat
set myChoices to {"1. Desktop", "2. Beursdrukkerij", "3. Leenbakker", "4. Schuitema", "5. Overige"}
set myDestinations to {path to desktop folder, "DTP:Beursdrukkerij:orders", "DTP:Leenbakker:orders", "DTP:Schuitema:orders", "DTP:Overige:orders"}
set theChosen to (choose from list myChoices) as string
if theChosen is "false" then return
set theChoiceNum to character 1 of theChosen as number as string
set myChosenDestination to item theChoiceNum of myDestinations
.

This is what I wanted, Great!!!
Thanks a lot :smiley: