I fixed the script to use only frames, and not the inner objects in them, so not to duplicate the label frames. I also made sure that when the script ends executing, the active layer is not the “InfoLayer” so you don’t mistakenly put important objects on this layer (it gets deleted every time the script runs).
app.doScript(main, ScriptLanguage.JAVASCRIPT, undefined, UndoModes.ENTIRE_SCRIPT, "Get XY Coords");
function main() {
var myDoc = app.activeDocument;
var myPages = myDoc.pages;
var myLayers = myDoc.layers;
for (var k = 0; k < myLayers.length; k++) {
if (myLayers[k].name == "Info Layer")
myLayers[k].remove();
break;
}
var myObjectStyle;
var myParaStyle;
myDoc.layers.add({name: "Info Layer"});
try {
myParaStyle = myDoc.paragraphStyles.item("InfoStyle");
myParaStyle.name;
}
catch (myError){
myParaStyle = myDoc.paragraphStyles.add({name:"InfoStyle", pointSize:10, leading:14, noBreak: true});
}
try{
myObjectStyle = myDoc.objectStyles.item("InfoFrame");
myObjectStyle.name;
}
catch (myError){
myObjectStyle = myDoc.objectStyles.add();
with(myObjectStyle) {
name = "InfoFrame";
basedOn = "[None]";
enableFrameFittingOptions = true;
enableAnchoredObjectOptions = false;
enableFill = false;
enableParagraphStyle = true;
enableStroke = false;
enableStrokeAndCornerOptions = false;
enableTextFrameAutoSizingOptions = true;
enableTextFrameGeneralOptions = true;
enableTextWrapAndOthers = false;
myObjectStyle.textFramePreferences.autoSizingType = AutoSizingTypeEnum.HEIGHT_AND_WIDTH;
myObjectStyle.textFramePreferences.autoSizingReferencePoint = AutoSizingReferenceEnum.BOTTOM_LEFT_POINT;
myObjectStyle.appliedParagraphStyle = myParaStyle;
}
}
for (i = 0; i <myPages.length; i++) {
var allStuff = myPages[i].allPageItems;
for (j = 0; j < allStuff.length; j++) {
var curStuff = allStuff[j];
if ((curStuff.constructor.name == "Image") || (curStuff.constructor.name == "PDF") || (curStuff.constructor.name == "ImportedPage")) {
continue;
}
var myBounds = curStuff.geometricBounds;
var myY = myBounds[0];
var myX = myBounds[1];
var myH = myBounds[2] - myY;
var myW = myBounds[3] - myX;
var myString = "Y: " + myY.toFixed(1) + " X: " + myX.toFixed(1) + " H: " + myH.toFixed(1) + " W: " + myW.toFixed(1);
var myFrame = myPages[i].textFrames.add();
myFrame.geometricBounds = [(myY - 5), myX, (myY - 2), (myX + 1)];
myFrame.appliedObjectStyle = myObjectStyle;
myFrame.contents = myString;
}
}
myDoc.activeLayer = myDoc.layers[1];
}