Thanks Dan.
It almost works, when it reaches the last second, which is 18, the expression breaks, so I changed the last statement to:
if (time < 18
||
time>18.01
)
With that it runs ok so that’s not an issue, however is not really following the edges of the layers, see attached:

I even added a few hundred pixels for x and y but still the box does not reach the edges of all text layers.
Any ideas why that could be? It only happens on some layers, and they all have the same specs as they are duplicates of each other, the only thing that changes is the length.
Thanks
D.
if (time < 1
)
sourceLayer = thisComp.layer("servicios")
else
if (time < 2)
sourceLayer = thisComp.layer("servicios 17")
else
if (time < 3)
sourceLayer = thisComp.layer("servicios 15")
else
if (time < 4)
sourceLayer = thisComp.layer("servicios 14")
else
if (time < 5)
sourceLayer = thisComp.layer("servicios 13")
else
if (time < 6)
sourceLayer = thisComp.layer("servicios 12")
else
if (time < 7)
sourceLayer = thisComp.layer("servicios 11")
else
if (time < 8)
sourceLayer = thisComp.layer("servicios 10")
else
if (time < 9)
sourceLayer = thisComp.layer("servicios 9")
else
if (time < 10)
sourceLayer = thisComp.layer("servicios 8")
else
if (time < 11)
sourceLayer = thisComp.layer("servicios 7")
else
if (time < 12)
sourceLayer = thisComp.layer("servicios 6")
else
if (time < 13)
sourceLayer = thisComp.layer("servicios 5")
else
if (time < 14)
sourceLayer = thisComp.layer("servicios 4")
else
if (time < 15)
sourceLayer = thisComp.layer("servicios 3")
else
if (time < 16)
sourceLayer = thisComp.layer("servicios 2")
else
if (time < 17)
sourceLayer = thisComp.layer("servicios 16")
else
if (time < 18
||
time>18.01
)
sourceLayer = thisComp.layer("servicios 18")
x=sourceLayer.sourceRectAtTime(time,false).width+150;
y=sourceLayer.sourceRectAtTime(time,true).height+20;
[x,y];