Quantcast
Channel: Adobe Community : Popular Discussions - InDesign Scripting
Viewing all articles
Browse latest Browse all 15932

How can I make a long list find-change only on Master

$
0
0

Hi everyone

 

I got this script:

 

//---------------------------------------------------------------------------------------- -------------------------------

var myDocuments = app.documents.everyItem();
var myLayers = myDocuments.layers.everyItem();

//Locked text frames on master spreads are not touched.
//If you want to unlock them you have to add something like this:

//Unlock ALL page items in every document on spreads and master spreads (optional):
myDocuments.pageItems.everyItem().locked = false;

var myPageItemsOnNormalSpreads = myDocuments.spreads.everyItem().pageItems.everyItem();

//Unlock the layers (optional)
myLayers.locked = false;

//Lock all first level page items on normal spreads
//That leaves the page items on master spreads unlocked:
myPageItemsOnNormalSpreads.locked = true;

//Now for the GREP part:
app.findChangeGrepOptions.includeMasterPages = true;
app.findGrepPreferences = changeGrepPreferences = null;
app.findGrepPreferences.findWhat = "\\b20\\d+\\b";

//Do the search on "all open document" level
//That will return an array of arrays:
var myTarget = myDocuments.findGrep();

//Flattening the myTarget array:
var flattenedFoundArray = [];

for(var n=0;n<myTarget.length;n++){
    flattenedFoundArray = flattenedFoundArray.concat(myTarget[n]);
    };

//Change contents of found texts in flattened array:
for(var n=flattenedFoundArray.length-1;n>=0;n--){
    flattenedFoundArray[n].contents = String(Number(flattenedFoundArray[n].contents) + 1);
    };

//Unlock all objects on normal spreads:
myPageItemsOnNormalSpreads.locked = false;

//Reset GREP find and change prefs:
app.findGrepPreferences = changeGrepPreferences = null;

 

//---------------------------------------------------------------------------------------- -------------------------------

 

made by Uwe

 

I change it into this, aim to make a mulit items of find-change only on master

 

//==============================================================================

 

var myDocuments = app.documents.everyItem();
var myLayers = myDocuments.layers.everyItem();

//Locked text frames on master spreads are not touched.
//If you want to unlock them you have to add something like this:

//Unlock ALL page items in every document on spreads and master spreads (optional):
myDocuments.pageItems.everyItem().locked = false;

var myPageItemsOnNormalSpreads = myDocuments.spreads.everyItem().pageItems.everyItem();

//Unlock the layers (optional)
myLayers.locked = false;

//Lock all first level page items on normal spreads
//That leaves the page items on master spreads unlocked:
myPageItemsOnNormalSpreads.locked = true;

//Now for the GREP part:
app.findChangeGrepOptions.includeMasterPages = true;
app.findGrepPreferences = changeGrepPreferences = null;
app.findGrepPreferences.findWhat = "USA";

//Do the search on "all open document" level
//That will return an array of arrays:
var myTarget = myDocuments.findGrep();

//Flattening the myTarget array:
var flattenedFoundArray = [];

for(var n=0;n<myTarget.length;n++){
    flattenedFoundArray = flattenedFoundArray.concat(myTarget[n]);
    };

//Change contents of found texts in flattened array:
for(var n=flattenedFoundArray.length-1;n>=0;n--){
    flattenedFoundArray[n].contents = "CHINA";
    };

//Unlock all objects on normal spreads:
myPageItemsOnNormalSpreads.locked = false;

//Reset GREP find and change prefs:
app.findGrepPreferences = changeGrepPreferences = null;


//---------------------------------------------------------------------------------------- -------------------------------

var myDocuments = app.documents.everyItem();
var myLayers = myDocuments.layers.everyItem();

//Locked text frames on master spreads are not touched.
//If you want to unlock them you have to add something like this:

//Unlock ALL page items in every document on spreads and master spreads (optional):
myDocuments.pageItems.everyItem().locked = false;

var myPageItemsOnNormalSpreads = myDocuments.spreads.everyItem().pageItems.everyItem();

//Unlock the layers (optional)
myLayers.locked = false;

//Lock all first level page items on normal spreads
//That leaves the page items on master spreads unlocked:
myPageItemsOnNormalSpreads.locked = true;

//Now for the GREP part:
app.findChangeGrepOptions.includeMasterPages = true;
app.findGrepPreferences = changeGrepPreferences = null;
app.findGrepPreferences.findWhat = "Washington DC";

//Do the search on "all open document" level
//That will return an array of arrays:
var myTarget = myDocuments.findGrep();

//Flattening the myTarget array:
var flattenedFoundArray = [];

for(var n=0;n<myTarget.length;n++){
    flattenedFoundArray = flattenedFoundArray.concat(myTarget[n]);
    };

//Change contents of found texts in flattened array:
for(var n=flattenedFoundArray.length-1;n>=0;n--){
    flattenedFoundArray[n].contents = "Beijing";
    };

//Unlock all objects on normal spreads:
myPageItemsOnNormalSpreads.locked = false;

//Reset GREP find and change prefs:
app.findGrepPreferences = changeGrepPreferences = null;


//===============================================================================

 

only what I can do is repeat and repeat again

 

is that another perfect solution to do that?

 

thanks

 

Teetan


Viewing all articles
Browse latest Browse all 15932

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>