Sort objects by geometric bounds function
Function by John Hawkinson. The source is here.
for (var p = 0; p < pages.length; p++) { page = pages[p]; textFrames = page.textFrames.everyItem().getElements().sort(byYX); } function byYX(a, b) { var aY = a.geometricBounds[0], bY = b.geometricBounds[0], aX = a.geometricBounds[1], bX = b.geometricBounds[1], dy = aY-bY, dx = aX-bX; return dy?dy:dx; }
Here is another approach by Marc Autret. (The original discussion is here).