Skip to main content
Participant
May 27, 2025
Answered

Override from script not working

  • May 27, 2025
  • 2 replies
  • 265 views

Hello to all,

 

I'm making a script to build a new document from some given file and pages.

 

I awe to override pages that have appied a mastepage. When i try to override i get the error value not valid for destinationPage. Page was aspected but Page as given.

 

var originalDoc = await app.open(sourceDoc, false);

const pageIndexesToCopy = pages.length > 0
  ? pages.map(p => p - 1)
  : Array.from({ length: originalDoc.pages.length }, (_, i) => i);
for (const pageIndex of pageIndexesToCopy) {
  let origPage = await originalDoc.pages.item(pageIndex);
  let newPage = await destDoc.pages.add();

  if (origPage.appliedMaster) {
    //check if the master is present in the DESTINATION document
    let origAppliedMaster = origPage.appliedMaster;

    if (!destDoc.masterSpreads.itemByName(origAppliedMaster.name).isValid) {
      let destAppliedMaster = await origAppliedMaster.duplicate(LocationOptions.TO_END, destDoc);
      newPage.appliedMaster = destAppliedMaster;
    };
    // FINE
  }

  for (var j = 0; j < origPage.pageItems.length; j++) {
    // var item = origPage.pageItems[j];
    var item = await origPage.pageItems.item(j);
    // await item.duplicate(newPage);

    await item.duplicate(newPage);

    if (item.overridden === true) {
      await item.override(newPage);
    }

  }

}

how can i get ride of this? Any help is appreciated!

Regards

Marco

Correct answer Eugene Tyson

Hello

I think this part is the issue

if (item.overridden === true) {
  await item.override(newPage);
}



Can you try this and see if it works - if it's not working can you share your sample documents and expected outcome? 

for (const pageIndex of pageIndexesToCopy) {
  let origPage = originalDoc.pages.item(pageIndex);
  let newPage = destDoc.pages.add();

  if (origPage.appliedMaster) {
    let origAppliedMaster = origPage.appliedMaster;

    // Ensure the master is copied to the dest doc
    if (!destDoc.masterSpreads.itemByName(origAppliedMaster.name).isValid) {
      let destAppliedMaster = origAppliedMaster.duplicate(LocationOptions.AT_END, destDoc);
      newPage.appliedMaster = destAppliedMaster;
    } else {
      newPage.appliedMaster = destDoc.masterSpreads.itemByName(origAppliedMaster.name);
    }

    // Override master page items *within the source doc*
    for (let i = 0; i < origAppliedMaster.pageItems.length; i++) {
      let masterItem = origAppliedMaster.pageItems[i];

      try {
        masterItem.override(origPage);
      } catch (e) {
        // Ignore errors on override (some items may already be overridden)
      }
    }
  }

  // Now copy content from origPage to newPage
  for (let j = 0; j < origPage.pageItems.length; j++) {
    let item = origPage.pageItems.item(j);
    try {
      item.duplicate(newPage);
    } catch (e) {
      $.writeln("Error duplicating item: " + e);
    }
  }
}




2 replies

Robert at ID-Tasker
Legend
June 1, 2025

@marketing_3959

 

I'm not JS guy and it looks like you're coding in UXP? - but you could invoke a menu command - an option from the hamburger menu of the Pages panel - to override all items from the parent. 

 

https://helpx.adobe.com/ee/indesign/how-to/override-master-pages.html

 

Eugene TysonCommunity ExpertCorrect answer
Community Expert
June 1, 2025

Hello

I think this part is the issue

if (item.overridden === true) {
  await item.override(newPage);
}



Can you try this and see if it works - if it's not working can you share your sample documents and expected outcome? 

for (const pageIndex of pageIndexesToCopy) {
  let origPage = originalDoc.pages.item(pageIndex);
  let newPage = destDoc.pages.add();

  if (origPage.appliedMaster) {
    let origAppliedMaster = origPage.appliedMaster;

    // Ensure the master is copied to the dest doc
    if (!destDoc.masterSpreads.itemByName(origAppliedMaster.name).isValid) {
      let destAppliedMaster = origAppliedMaster.duplicate(LocationOptions.AT_END, destDoc);
      newPage.appliedMaster = destAppliedMaster;
    } else {
      newPage.appliedMaster = destDoc.masterSpreads.itemByName(origAppliedMaster.name);
    }

    // Override master page items *within the source doc*
    for (let i = 0; i < origAppliedMaster.pageItems.length; i++) {
      let masterItem = origAppliedMaster.pageItems[i];

      try {
        masterItem.override(origPage);
      } catch (e) {
        // Ignore errors on override (some items may already be overridden)
      }
    }
  }

  // Now copy content from origPage to newPage
  for (let j = 0; j < origPage.pageItems.length; j++) {
    let item = origPage.pageItems.item(j);
    try {
      item.duplicate(newPage);
    } catch (e) {
      $.writeln("Error duplicating item: " + e);
    }
  }
}