Skip to content
Fabian Morón Zirfas edited this page Jun 13, 2025 · 2 revisions

Written for this stackoverflow question:

How to change color swatch of colored greyscale pictures using ExtendScript in InDesign?

It currently sets random color for the images and only looks for rectangles. You could use

page.allPageItems

instead. (if you also have images in ovals or polygons)

Needs a document with some grayscale images on some pages.

// the main function
var main = function () {
	var doc = app.activeDocument; // get the current document
	// loop the pages
	for (var i = 0; i < doc.pages.length; i++) {
		var page = doc.pages[i]; // isolate the page
		// loop all rectangles
		for (var j = 0; j < page.rectangles.length; j++) {
			var rect = page.rectangles[j]; // isolate a rectangle
			// test if there is an image inside
			if (rect.images.length > 0) {
				var image = rect.images[0]; // isolate the image
				// asign a random color from th swatches
				image.fillColor =
					doc.swatches[Math.floor(Math.random() * doc.swatches.length - 1)];
			} // end if image
		} // end loop j rectangles
	} // end loop i pages
}; // end of main
main(); // run it

Home

Clone this wiki locally