Skip to main content
Legend
August 11, 2013
Question

After Effects ExtendScript Training (Complete series)

  • August 11, 2013
  • 3 replies
  • 5344 views

With this weeks post of episode 19, I have now reached the end of the series. I wanted to consolidate all the links into a proper organized post, so that is why I am making this post. It has been a long journey to get to this point, and I am so very grateful to know and have met some of you in this forum. There have been many people in my life that have made it possible for me to learn a lot about After Effects over the years. Jeff Almasol being the key that helped spark that scripting interest so many years ago in 2007 when he saved my butt on a nightmare project. With my cry for help, and this script (http://www.redefinery.com/ae/view.php?item=rd_NewProjectFromComp) showing up an hour later. It made me think about a ton of new possibilities. I still didn't know coding though which made the process VERY difficult. Step in Dan Ebberts and Harry Frank. They provided me the tools necessary to learn expressions, which broke open the doors and made my understanding of coding possible.

http://www.motionscript.com/

http://www.toolfarm.com/product/after_effects_expressions_series_1_bundle

Paul Tuersley, and Lloyd Alvarez also quickly became my goto for scripting help and made my final transition into After Effects scripting possible. All of these men are gods in my eye and deserve such respect.

I made this series with the goal of providing a helpful tool to fill in some of the gaps of information that exists online on working with ExtendScript for After Effects. I also wanted to give back to the same community that so graciously gave to me over the years. That is why this series is free to the public, and why it is packed full of content. Sixteen hours, fifteen minutes and forty seconds worth of content to be exact. Yes, I made a script to add up the clip times.

Ok, so here is the complete list of the entire After Effects ExtendScript Training series. All nineteen episodes with over sixteen hours of video content. Enjoy.

Episode 1: (Intro)

http://provideocoalition.com/pvcexclusive/video/after-effects-extendscript-training-ep-1-2-3

Episode 2: (Javascript Basics p1)

http://provideocoalition.com/pvcexclusive/video/after-effects-extendscript-training-ep-1-2-3/P2

Episode 3: (Javascript Basics p2)

http://provideocoalition.com/pvcexclusive/video/after-effects-extendscript-training-ep-1-2-3/P3

Episode 4: (After Effects Object Model structure overview / Script Preparation and development tips / Single Item Access of various project items, comps and layers)

http://provideocoalition.com/pvcexclusive/video/after-effects-extendscript-training-ep-4

Episode 5: (Access Renderqueue items, output modules and file paths / Multiple item access of project items, comps and layers / Batch change all renderqueue items file paths)

http://provideocoalition.com/pvcexclusive/video/after-effects-extendscript-training-ep-5

Episode 6: (Collecting data into an Array() / Changing values / Various tips)

http://provideocoalition.com/pvcexclusive/video/after-effects-extendscript-training-ep-6

Episode 7: (Create new comps and folders / Create Null, Solid, and Text layers)

http://provideocoalition.com/pvcexclusive/video/after-effects-extendscript-training-ep-7

Episode 8: (Create multiple comps of various sizes / Use Undo group / Add solids to match each comp / Various tips)

http://provideocoalition.com/pvcexclusive/video/after-effects-extendscript-training-ep-8

Episode 9: (Globally change blue solids to red / Replace solid name blue with red)

http://provideocoalition.com/pvcexclusive/video/after-effects-extendscript-training-ep-9

Episode 10: (Build a custom function to collect all CompItem objects / Modify function to dynamically allow for choice of CompItem, FolderItem or FootageItem)

http://provideocoalition.com/pvcexclusive/video/after-effects-extendscript-training-ep-10

Episode 11: (Build a floating GUI with groups, buttons, checkboxes, radio buttons, dropdown lists, progress bars, icon buttons, images, static text, edit text boxes, sliders, scroll bars, panels with names, tabbed panels with multiple tabs, listbox lists, listbox lists with multiple columns, or tree view lists)

http://provideocoalition.com/pvcexclusive/video/after-effects-extendscript-training-ep-11

Episode 12 P1 & 2: (Build a dockable & floating combo GUI with groups, buttons, checkboxes, radio buttons, dropdown lists, progress bars, icon buttons, images, static text, edit text boxes, sliders, scroll bars, panels with names, tabbed panels with multiple tabs, listbox lists, listbox lists with multiple columns, or tree view lists)

http://provideocoalition.com/pvcexclusive/video/after-effects-extendscript-training-ep-12

Episode 13: (ExtendScript Developer Utility script release / Retrieve a list of all project item footage file paths)

http://provideocoalition.com/pvcexclusive/video/after-effects-extendscript-training-ep-13

Episode 14: (Processing text strings)

http://provideocoalition.com/pvcexclusive/video/after-effects-extendscript-training-ep-14

Episode 15 P1 & 2: (Keyframes)

http://provideocoalition.com/pvcexclusive/video/after-effects-extendscript-training-ep-15

Episode 16 P1 & 2: (Create text layers from text document)

http://provideocoalition.com/pvcexclusive/video/after-effects-extendscript-training-ep-16

Episode 17 P1, 2 & 3: (Export property info to text document)

http://provideocoalition.com/pvcexclusive/video/after-effects-extendscript-training-ep-17

Episode 18 P1, 2 & 3: (Dockable list of all effects used in project and export to text document)

http://provideocoalition.com/pvcexclusive/video/after-effects-extendscript-training-ep-18

Episode 19 P1 & 2: (Create custom functions to Retrieve layer types, retrieve all fonts used in project, retrieve a text layer's justification, retrieve a layer's blending mode)

http://provideocoalition.com/pvcexclusive/video/after-effects-extendscript-training-ep-19

This topic has been closed for replies.

3 replies

ti.s.cavalcanti
Inspiring
June 28, 2015

Very good!

Participant
June 11, 2015

Hi David,

I've been following your scripting tutorials (which are great by the way) - wondering if you could help me out with a problem I'm running into?

I've modified your find project items example to eliminate duplicates (e.g. in the case of imported layered files)

Populating my listbox works fine if I'm just looking for curItem which list all the project files including the duplicates.

I also know how to populate my list and remove all files that have duplicates but I don't know how to remove all but 1 duplicate file

So far my modifications to remove all but 1 duplicate have only been achieved by parsing an array. The problem is that I haven't figured out how to populate my listbox using the resulting array.

My modifications have included 2 ways that achieve the same results (although I think the first one is faster and definitely cleaner):

1. parsing an array using RegEx

2. removing duplicates through a combination of If(), indexOf(), and/or match() statements and RegEx  and then using concat() to add one of the duplicates to the array.

hopefully all of this makes sense

Legend
June 11, 2015

My modifications have included 2 ways that achieve the same results (although I think the first one is faster and definitely cleaner):

1. parsing an array using RegEx

2. removing duplicates through a combination of If(), indexOf(), and/or match() statements and RegEx  and then using concat() to add one of the duplicates to the array.

Removing duplicates I have found to be tricky. I believe I had to search online for an understanding of how to make it happen a few times myself. You are probably right in that the 1st option is faster, since you are not running as many processes back to back. As part of my Free Function Friday series, which is on the way and still actively being recorded, I had put together a basic function that sorts and removes dups.

function sortAndRemoveDups(aryInput){

     var arySorted = aryInput.sort();

     var aryLength = arySorted.length;

     var results = new Array();

     for(var i=0; i<aryLength; i++){

          if(arySorted != arySorted[i+1]){

               results[results.length] = arySorted;

          }

     }

     return results;

}

This function will return a rebuilt array of content. For it to work properly, it needs to sort the array initially so said dups are next to each other, and simply compares each index against the next one. While not bulletproof, this function might help you out. You could modify this function to save only dups or the unique. Once you have your returned array, you would either create a new listbox and populate them in through a loop or you can removeAll() on your original listbox and then populate the new items through a loop there. Hope that all makes sense.

Participant
June 12, 2015

Thanks David,

I think that Sorting function will come in handy -but I think I need help still on that last part: how to "populate them in through a loop"?


Before I was just using the 'curItem.name' to populate my first column rather than the 'assetPath' array from Episode 13.  So I guess I missed the part on how to populate the listbox using an array.

How would I go about looping through the new array?

     for(var k=0; k < arySorted.length; k++){

     var newAryItem = arySorted; //?

not sure what I'm doing wrong - everything I've tried so far populates only the first row of the first column. Depending on what I try it either populates just the first item or with the correct entire new array but in a single line (row 1) instead of 1 for each row.

Now it does some other weird stuff like - a never ending loop or a long list with spaces and adding the items in the array incrementally to each row down the list

(e.g. item1

item 1 item 2

//space

item 1 item 2 item 3) etc.

Known Participant
August 11, 2013

David, thank you so much.

Your series of video tutorials were very helpful.