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
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
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
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.
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
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
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}
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
.