Marvelous !!!!!! You are super creative....
This works fine.... Thank you very much danaken3.
And another little thing came to my mind to develop this, and also very usefull to all.
If you can try to behave margin numbers like running headers. That means, if note number 3 starting from page 2 and it continue upto page 4, then page 2 and 3 also need to show note number 3 on the margin. Normally running headers doing that.
Is it possible ?
Somehow you make my works so easy...... Thanks again and again........
Try this update:
app.doScript(Main, undefined, undefined, UndoModes.ENTIRE_SCRIPT,"Run Script");
function Main(){
// Declare variables
var myDoc = app.activeDocument;
var myPages = myDoc.pages;
var myPage;
var myFrames;
var myFrame;
var myParas;
var myPara;
var headerStyle = myDoc.paragraphStyles.item("Note_para");
var marginNumberParaStyle;
var marginNumberObjStyle;
var noteNumber;
var ip;
// If "Margin_number" para style doesn't exist, create it
if(myDoc.paragraphStyles.item("Margin_number") == null) {
var paraProps = {
name: "Margin_number",
appliedFont: "Minion Pro",
basedOn: myDoc.paragraphStyles.item("[No Paragraph Style]"),
fillColor: myDoc.swatches.itemByName("Paper"),
fontStyle: "Regular",
justification: Justification.CENTER_ALIGN,
leading: Leading.AUTO,
paragraphShadingBottomOffset: "0p1",
paragraphShadingColor: myDoc.swatches.itemByName("C=75 M=5 Y=100 K=0"),
paragraphShadingOn: true,
paragraphShadingTint: 100,
paragraphShadingTopOffset: "0p5",
paragraphShadingWidth: ParagraphShadingWidthEnum.COLUMN_WIDTH,
pointSize: 14,
spaceAfter: "0p7.5"
};
myDoc.paragraphStyles.add(paraProps);
}
marginNumberParaStyle = myDoc.paragraphStyles.item("Margin_number");
// If "Margin_number" object style doesn't exist, create it
if(myDoc.objectStyles.itemByName("Margin_number") == null) {
var objProps = {
name: "Margin_number",
anchoredObjectSettings: {
anchorPoint: AnchorPoint.BOTTOM_RIGHT_ANCHOR,
anchorXoffset: "2p9",
anchorYoffset: "-0p5",
anchoredPosition: AnchorPosition.ANCHORED,
horizontalReferencePoint: AnchoredRelativeTo.PAGE_MARGINS,
spineRelative: true,
verticalReferencePoint: AnchoredRelativeTo.PAGE_MARGINS
},
appliedParagraphStyle: marginNumberParaStyle,
basedOn: myDoc.objectStyles.itemByName("[None]"),
enableAnchoredObjectOptions: true,
enableParagraphStyle: true,
enableStroke: false,
enableTextFrameAutoSizingOptions: true,
enableTextFrameGeneralOptions: true,
enableTransformAttributes: true,
textFramePreferences: {
autoSizingReferencePoint: AutoSizingReferenceEnum.BOTTOM_CENTER_POINT,
autoSizingType: AutoSizingTypeEnum.HEIGHT_AND_WIDTH,
minimumWidthForAutoSizing: "1p8",
useMinimumWidthForAutoSizing: true,
verticalJustification: VerticalJustification.BOTTOM_ALIGN
}
};
myDoc.objectStyles.add(objProps);
}
marginNumberObjStyle = myDoc.objectStyles.itemByName("Margin_number");
// Delete all text frames with "Margin_number" object style applied
app.findObjectPreferences.appliedObjectStyles = marginNumberObjStyle;
var objectList = myDoc.findObject();
if (objectList.length >0) {
for (var i=objectList.length-1; i>=0; i--) {
objectList[i].remove();
}
alert("Deleted all existing margin numbers.");
}
// Loop through pages
for (var i=0; i<myPages.length; i++) {
myPage = myPages[i];
var noteNumbers = null;
if (!myPage.textFrames) {
break;
}
// Loop through text frames
myFrames = myPage.textFrames;
for (var j=myFrames.length-1; j>=0; j--) {
myFrame = myFrames[j];
// Loop through paragraphs
myParas = myFrame.paragraphs;
for (var k=0; k<myParas.length; k++) {
myPara = myParas[k];
// Check if para has header style applied
if (myPara.appliedParagraphStyle == headerStyle) {
ip = myPara.insertionPoints[0];
// Get paragraph's number and add it to noteNumbers string
try {
noteNumber = myPara.numberingResultNumber.toString();
if(noteNumbers==null) {
noteNumbers = noteNumber;
}
else noteNumbers = noteNumbers.concat("\r" + noteNumber);
}
catch(err) {
}
}
}
}
// If no paras on pg. are header, use final para as insertion point
if (ip==null && myPara != null) {
ip = myPara.insertionPoints[0];
}
// Create text frame and add noteNumbers string
if (ip!=null){
myTextFrame = ip.textFrames.add();
myTextFrame.appliedObjectStyle = marginNumberObjStyle;
if (noteNumbers != null) {
myTextFrame.contents = noteNumbers;
}
// If no paras on pg. are header, insert last note number of prev. pg.
else if (noteNumber != null) {
myTextFrame.contents = noteNumber;
}
}
// Reset insertion point variable to null
ip = null;
}
alert ("Script complete");
}