I needed to devise a method in which to unify the way my motion graphics team worked. Everyone had their own folder structure and system of naming their files. I needed to create order from the chaos. So I designed a ‘project creator’ in Apple Script. I really liked the way I could have this utility up in the top corner of the screen, where it is easy for the designer to click on it.
It asks the user a simple set of questions. What is the project called? What channel is it for? Is it a promo, imaging project or a toolkit?
The result is a folder structure that is created on the users work drive, with a consistent naming scheme and all the relevant folders that are needed. The project folder is always prefixed with the date of creation. It helps to organise the project chronologically and to find old projects months after you have finished with it.
I found Apple Script to be quite a different language to code in comparison to other languages. It has a unique syntax that is supposedly easier for humans to read. I am not convinced of that, but I still loved using it and because of it being so closely tied to the operating system, it makes it very powerful. It reminds me of using AREXX on my Amiga computers back in the nineties. Now that was a fantastic computer and the scripting integration was top notch, but that is a story for another day.
Below is the script I made. It is my first time in Apple Script, so you experienced coders out there might have a few things to say, and I do welcome all comments.
-- setting the variables
set theProject to ""
set theChannel to ""
set theType to ""
set theTypePrime to "00_Created Toolkits"
set toolkitType to ""
set theIcon to 0
set theDate to current date
set theDay to ""
set theMonth to ""
set theYear to ""
set theProjectname to ""
set theDisk to "WASD"
set Synology to "Synology"
set etvtoolkitPreset to "Toolkit:03 Toolkits_e.tv:14e_022_TE:14e_022_TE_V06.aep"
set etvprimePreset to "Synology:00 Toolkit Templates:Endboards Template:20150319_TE_Template_V04.aep"
set combosPreset to "Synology:00 Toolkit Templates:Combos_Template:Combos_Template.aep"
set nextupPreset to "Synology:00 Toolkit Templates:Next Up Template:Next Up Template V06.aep"
set strapPreset to "Synology:00 Toolkit Templates:Straps_Template:Strap Template_V01.aep"
set mctoolkitPreset to "Toolkit:03 Toolkits_Multichannel:021_MC_Topical Endboards_V12:021_Topical Endboards_V13.aep"
set ebtoolkitPreset to "Toolkit:03 Toolkits_eBotswana:eB_022_TE_Flattened HD_V02:eB_022_TE_Flattened HD_V02.aep"
set etvtoolkitFile to "14e_022_TE_V06.aep"
set etvprimeFile to "20150319_TE_Template_V04.aep"
set mctoolkitFile to "021_Topical Endboards_V13.aep"
set ebtoolkitFile to "eB_022_TE_Flattened HD_V02.aep"
set combosFile to "Combos_Template.aep"
set nextupFile to "Next Up Template V06.aep"
set strapFile to "Strap Template_V01.aep"
set newPath to ""
set newName to ""
-- converting the date into a usable string
if day of theDate < 10 then
set the theDay to "0" & day of theDate
else
set theDay to day of theDate
end if
if ((month of theDate) * 1) < 10 then set the theMonth to "0" & (month of theDate) * 1 else set theMonth to (month of theDate) * 1 end if if ((year of theDate) * 1) > 10 then
set the theYear to (year of theDate) * 1 as string
else
set theYear to (year of theDate) * 1 as string
end if
-- asking the questions
display dialog "What is the project name?" default answer theProject with icon theIcon
set theProject to text returned of result
choose from list {"Multichannel", "e.tv", "eKasi+", "eMovies+", "eAfrica+", "eToonz+", "BeatLab", "OpenView HD", "eNCA", "eAfrica", "eBotswana", "eGhana", "Miscellaneous"} with prompt "What channel is this for?"
set theChannel to result as text
display dialog "Is this a promo, toolkit or an imaging project?" buttons {"promo", "imaging", "toolkits"}
if button returned of result = "promo" then
set theType to "Promos" as text
else if button returned of result = "imaging" then
set theType to "Channel Imaging" as text
else
set theType to "00_Created Toolkits" as text
end if
if theType = "00_Created Toolkits" then
set toolkitType to choose from list {"nextup", "combo", "endboard daytime", "endboard primetime", "strap"} with prompt "Is this toolkit a nextup, combo or an endboard?"
if toolkitType contains "nextup" then
set theType to "00_Created Next ups" as text
else if toolkitType contains "combo" then
set theType to "00_Created combos" as text
else if toolkitType contains "endboard daytime" then
set theType to "00_Created Toolkits" as text
else if toolkitType contains "endboard primetime" then
set theType to "00_Created Toolkits Prime" as text
else if toolkitType contains "strap" then
set theType to "00_Created Straps" as text
end if
end if
-- creating the full project name and make folders for Imaging
if theType = "Channel Imaging" then
set theProjectname to theYear & theMonth & theDay & "_" & theProject
tell application "Finder"
if not (exists folder theType of disk theDisk) then
make new folder of disk theDisk with properties {name:theType}
end if
end tell
tell application "Finder"
if not (exists folder theChannel of folder theType of disk theDisk) then
make new folder at folder theType of disk theDisk with properties {name:theChannel}
end if
(* -- set the colour of the folder
if theChannel = "e.tv" then
set label index of result to 2
else if theChannel = "eKasi+" then
set label index of result to 6
else if theChannel = "eMovies+" then
set label index of result to 5
else if theChannel = "eAfrica+" then
set label index of result to 1
else if theChannel = "eNCA" then
set label index of result to 4
else if theChannel = "eToonz+" then
set label index of result to 3
end if
*)
end tell
tell application "Finder"
make new folder at folder theChannel of folder theType of disk theDisk with properties {name:theProjectname}
make new folder at folder theProjectname of folder theChannel of folder theType of disk theDisk with properties {name:"01 Documents"}
make new folder at folder theProjectname of folder theChannel of folder theType of disk theDisk with properties {name:"02 Reference"}
make new folder at folder theProjectname of folder theChannel of folder theType of disk theDisk with properties {name:"03 External Elements"}
make new folder at folder theProjectname of folder theChannel of folder theType of disk theDisk with properties {name:"04 Internal Elements"}
make new folder at folder theProjectname of folder theChannel of folder theType of disk theDisk with properties {name:"05 Photoshop"}
make new folder at folder theProjectname of folder theChannel of folder theType of disk theDisk with properties {name:"06 Illustrator"}
make new folder at folder theProjectname of folder theChannel of folder theType of disk theDisk with properties {name:"07 After Effects"}
make new folder at folder theProjectname of folder theChannel of folder theType of disk theDisk with properties {name:"08 Cinema 4D"}
make new folder at folder theProjectname of folder theChannel of folder theType of disk theDisk with properties {name:"09 Flash"}
make new folder at folder theProjectname of folder theChannel of folder theType of disk theDisk with properties {name:"10 Premiere"}
make new folder at folder theProjectname of folder theChannel of folder theType of disk theDisk with properties {name:"11 Test Renders"}
make new folder at folder theProjectname of folder theChannel of folder theType of disk theDisk with properties {name:"12 Approvals"}
make new folder at folder theProjectname of folder theChannel of folder theType of disk theDisk with properties {name:"13 Process Renders"}
make new folder at folder theProjectname of folder theChannel of folder theType of disk theDisk with properties {name:"14 Final Renders"}
make new folder at folder theProjectname of folder theChannel of folder theType of disk theDisk with properties {name:"15 Trash"}
end tell
-- creating the full project name and make folders for Toolkits daytime
else if theType = "00_Created Toolkits" then
set theProjectname to theYear & theMonth & theDay & "_TE_" & theChannel & "_" & theProject
tell application "Finder"
if not (exists folder theType of disk Synology) then
make new folder of disk Synology with properties {name:theType}
end if
end tell
tell application "Finder"
make new folder at folder theType of disk Synology with properties {name:theProjectname}
-- set the colour of the folder
if theChannel = "e.tv" then
set label index of result to 2
else if theChannel = "eKasi+" then
set label index of result to 6
else if theChannel = "eMovies+" then
set label index of result to 5
else if theChannel = "eAfrica+" then
set label index of result to 1
else if theChannel = "eNCA" then
set label index of result to 4
else if theChannel = "eToonz+" then
set label index of result to 3
else if theChannel = "BeatLab" then
set label index of result to 7
end if
make new folder at folder theProjectname of folder theType of disk Synology with properties {name:"Finals"}
if theChannel = "e.tv" then
copy file etvtoolkitPreset to folder theProjectname of folder theType of disk Synology
set newPath to Synology & ":" & theType & ":" & theProjectname & ":" & etvtoolkitFile
set newName to theProjectname & ".aep"
set the name of file newPath to newName
else if theChannel = "eBotswana" then
copy file ebtoolkitPreset to folder theProjectname of folder theType of disk Synology
set newPath to Synology & ":" & theType & ":" & theProjectname & ":" & ebtoolkitFile
set newName to theProjectname & ".aep"
set the name of file newPath to newName
else
copy file mctoolkitPreset to folder theProjectname of folder theType of disk Synology
set newPath to Synology & ":" & theType & ":" & theProjectname & ":" & mctoolkitFile
set newName to theProjectname & ".aep"
set the name of file newPath to newName
end if
end tell
-- creating the full project name and make folders for Toolkits primetime
else if theType = "00_Created Toolkits Prime" then
set theProjectname to theYear & theMonth & theDay & "_EB_" & theChannel & "_" & theProject
tell application "Finder"
if not (exists folder theTypePrime of disk Synology) then
make new folder of disk Synology with properties {name:theTypePrime}
end if
end tell
tell application "Finder"
make new folder at folder theTypePrime of disk Synology with properties {name:theProjectname}
set label index of result to 5
make new folder at folder theProjectname of folder theTypePrime of disk Synology with properties {name:"Finals"}
copy file etvprimePreset to folder theProjectname of folder theTypePrime of disk Synology
set newPath to Synology & ":" & theTypePrime & ":" & theProjectname & ":" & etvprimeFile
set newName to theProjectname & ".aep"
set the name of file newPath to newName
end tell
-- creating the full project name and make folders for Nextups
else if theType = "00_Created Next ups" then
set theProjectname to theYear & theMonth & theDay & "_NU_" & theChannel & "_" & theProject
tell application "Finder"
if not (exists folder theType of disk Synology) then
make new folder of disk Synology with properties {name:theType}
end if
end tell
tell application "Finder"
make new folder at folder theType of disk Synology with properties {name:theProjectname}
make new folder at folder theProjectname of folder theType of disk Synology with properties {name:"Finals"}
copy file nextupPreset to folder theProjectname of folder theType of disk Synology
set newPath to Synology & ":" & theType & ":" & theProjectname & ":" & nextupFile
set newName to theProjectname & ".aep"
set the name of file newPath to newName
end tell
-- creating the full project name and make folders for Combos
else if theType = "00_Created combos" then
set theProjectname to theYear & theMonth & theDay & "_CB_" & theChannel & "_" & theProject
tell application "Finder"
if not (exists folder theType of disk Synology) then
make new folder of disk Synology with properties {name:theType}
end if
end tell
tell application "Finder"
make new folder at folder theType of disk Synology with properties {name:theProjectname}
make new folder at folder theProjectname of folder theType of disk Synology with properties {name:"Finals"}
copy file combosPreset to folder theProjectname of folder theType of disk Synology
set newPath to Synology & ":" & theType & ":" & theProjectname & ":" & combosFile
set newName to theProjectname & ".aep"
set the name of file newPath to newName
end tell
-- creating the full project name and make folders for Straps
else if theType = "00_Created Straps" then
set theProjectname to theYear & theMonth & theDay & "_ST_" & theChannel & "_" & theProject
tell application "Finder"
if not (exists folder theType of disk Synology) then
make new folder of disk Synology with properties {name:theType}
end if
end tell
tell application "Finder"
make new folder at folder theType of disk Synology with properties {name:theProjectname}
make new folder at folder theProjectname of folder theType of disk Synology with properties {name:"Finals"}
copy file strapPreset to folder theProjectname of folder theType of disk Synology
set newPath to Synology & ":" & theType & ":" & theProjectname & ":" & strapFile
set newName to theProjectname & ".aep"
set the name of file newPath to newName
end tell
-- creating the full project name and make folders for Promos
else if theType = "Promos" then
set theProjectname to theYear & theMonth & theDay & "_" & theChannel & "_" & theProject
tell application "Finder"
if not (exists folder theType of disk theDisk) then
make new folder of disk theDisk with properties {name:theType}
end if
end tell
tell application "Finder"
make new folder at folder theType of disk theDisk with properties {name:theProjectname}
(* -- set the colour of the folder
if theChannel = "e.tv" then
set label index of result to 2
else if theChannel = "eKasi+" then
set label index of result to 6
else if theChannel = "eMovies+" then
set label index of result to 5
else if theChannel = "eAfrica+" then
set label index of result to 1
else if theChannel = "eNCA" then
set label index of result to 4
else if theChannel = "eToonz+" then
set label index of result to 3
end if
*)
make new folder at folder theProjectname of folder theType of disk theDisk with properties {name:"01 Documents"}
make new folder at folder theProjectname of folder theType of disk theDisk with properties {name:"02 Reference"}
make new folder at folder theProjectname of folder theType of disk theDisk with properties {name:"03 External Elements"}
make new folder at folder theProjectname of folder theType of disk theDisk with properties {name:"04 Internal Elements"}
make new folder at folder theProjectname of folder theType of disk theDisk with properties {name:"05 Photoshop"}
make new folder at folder theProjectname of folder theType of disk theDisk with properties {name:"06 Illustrator"}
make new folder at folder theProjectname of folder theType of disk theDisk with properties {name:"07 After Effects"}
make new folder at folder theProjectname of folder theType of disk theDisk with properties {name:"08 Cinema 4D"}
make new folder at folder theProjectname of folder theType of disk theDisk with properties {name:"09 Flash"}
make new folder at folder theProjectname of folder theType of disk theDisk with properties {name:"10 Premiere"}
make new folder at folder theProjectname of folder theType of disk theDisk with properties {name:"11 Test Renders"}
make new folder at folder theProjectname of folder theType of disk theDisk with properties {name:"12 Approvals"}
make new folder at folder theProjectname of folder theType of disk theDisk with properties {name:"13 Process Renders"}
make new folder at folder theProjectname of folder theType of disk theDisk with properties {name:"14 Final Renders"}
make new folder at folder theProjectname of folder theType of disk theDisk with properties {name:"15 Trash"}
end tell
end if