Understood. In playing around (and trying to guess how you have your comp organized) I couldn’t get the text to work until I made that change to your expression, after which I started getting expected results from sourceRectAtTime(), so there may be a connection.
The only think I can think of would be to add a Scale Animation and set the Scale amount to your maximum size, add an Expression Selector (you can then delete the Range Selector) and add a Tracking property to the Animator so that tracking increases as the scale goes up. You might need to fiddle with the Expression Selector’s Amount expression if you don’t like how the size progresses from small to large.
Ah, I hadn’t noticed that your layers have been time stretched to 3.3%, so you’d have to factor that into the calculation of how long to set the duration of the source comp.
This is very simplified and very specific to your example, but hopefully it gives you the idea:
var mainComp = app.project.activeItem; var two = mainComp.layer("Two"); two.source.duration = 2; two.outPoint = 3; var three = mainComp.layer("Three"); three.startTime = 3; var twoComp = two.source; for (var i = 1; i <= twoComp.numLayers; i++){ twoComp.layer(i).outPoint = 2; }