Skip to main content
May 24, 2014
Answered

Overide all master page's text frame only

  • May 24, 2014
  • 1 reply
  • 807 views

I have a document have 6 pages with 3 master page, A-master, B-master, C-master, A-master have 3 text frame, B-master is base on A-Master, and C-Master is base on B-Master

P1-2 (Apply A-Master), P3-4 (Apply B-Master), P5-6(Apply C-Master)

What I want to do is overrider the master page text Frame only, if my script is work, P1-6 will overrider the master text Frame, but it only overrider P1-2 text Frame, Please help to fix it! Many Thx

var myDocument = app.activeDocument; 
var TotalPages = (myDocument.pages.count()); 
for(var CurrentPage=0; CurrentPage < TotalPages; CurrentPage++) { 
     OverrideMasterItems(); 

function OverrideMasterItems() { 

var allItems = myDocument.pages[CurrentPage].appliedMaster.pages.item(1).textFrames.everyItem().getElements(); 

  for(var i=0;i<allItems.length;i++){ 

try{

    allItems.override(myDocument.pages[CurrentPage])} 
catch(e){} 

  } 

  var allItems0 = myDocument.pages[CurrentPage].appliedMaster.pages.item(0).textFrames.everyItem().getElements(); 

  for(var i=0;i<allItems0.length;i++){ 

try{

    allItems0.override(myDocument.pages[CurrentPage])} 
catch(e){} 

  } 

}

This topic has been closed for replies.
Correct answer Jump_Over

no, coz sometimes need facing Pages sometime no need facing Pages, can make both work?


Hi,

OK. It looks much easier than I expected, since there is a page property masterPageItems

So:

var

  mDoc = app.activeDocument,

  mPages = mDoc.pages.everyItem().getElements(),

  cFrames, len,

  cnt = mPages.length;

  while (cnt-->0) {

       cFrames = mPages[cnt].masterPageItems;

       len = cFrames.length;

       while (len-->0)

            if (cFrames[len].constructor.name == "TextFrame")

                 cFrames[len].override(mPages[cnt]);

       }

Jarek

1 reply

csm_phil
Legend
May 24, 2014

Hi creativejoan0425,

Pleas try the below js code.

var myDocument = app.activeDocument;

var TotalPages = (myDocument.pages);

for(var i=0; i< TotalPages.length; i++) {

    if(TotalPages.appliedMaster.name=="A-Master"){

        var allItems  = (TotalPages.appliedMaster.textFrames);

        for(var a=allItems.length-1; a>=0; a--){

            try{

                allItems.override(TotalPages)}

            catch(e){}

            }

        }

    }

thx,

csm_phil