Copy link to clipboard
Copied
Hi,
I have found a script online that takes all of the swatches that are used in an illustrator document and outputs each swatch name on its own line of text.
This works well, however I would like each line of text to also inherit the specific swatch colour.
So for example "1_Base_Hilite_70%" I would like this line of text to be coloured with the appropriate spot colour swatch with the same name and so on.
Can anyone please let me know what I need to add/amend to the below code to achieve this?
I am new to coding so please let me know if this is not the best place to post.
function swatchNamesToText() {
if (app.documents.length = 0) {
return;
} else {
var docRef = app.activeDocument;
var sel = docRef.selection;
if (sel.length == 1 && sel[0].typename == 'TextFrame') {
var nameList = Array();
var swatGrps = docRef.swatchGroups;
for (var i = 0; i < swatGrps.length; i++) {
var grpList = swatGrps[i].getAllSwatches();
for (var j = 0; j < grpList.length; j++) {
if (grpList[j].name != '[None]'
&&
grpList[j].name != '[Registration]'
&&
grpList[j].name != 'BRIGHT PINK - Poly 775' &&
grpList[j].name != 'White' &&
grpList[j].name != 'C=0 M=0 Y=0 K=100' &&
grpList[j].name != 'Black') {
nameList.push(grpList[j].name);
}
}
}
}
sel[0].contents = nameList.join('\n');
}
}
swatchNamesToText();
Hi @Jono36042432dhqz, see if this code gets you on the right track. I've fiddled with a few things I didn't need to—just for the sake of tidiness—and you can go back and alter your existing to code with any new parts you learn if you prefer.
- Mark
(function () {
if (0 === app.documents.length)
return alert('Please open a document and try again.');
var docRef = app.activeDocument;
var textFrame = docRef.selection[0];
if (
undefined == textFrame
|| textF...
Copy link to clipboard
Copied
Hi @Jono36042432dhqz, see if this code gets you on the right track. I've fiddled with a few things I didn't need to—just for the sake of tidiness—and you can go back and alter your existing to code with any new parts you learn if you prefer.
- Mark
(function () {
if (0 === app.documents.length)
return alert('Please open a document and try again.');
var docRef = app.activeDocument;
var textFrame = docRef.selection[0];
if (
undefined == textFrame
|| textFrame.typename !== 'TextFrame'
)
return alert('Please select a text frame and try again.');
var swatchGroups = docRef.swatchGroups;
for (var i = 0; i < swatchGroups.length; i++) {
var swatches = swatchGroups[i].getAllSwatches();
swatchesLoop:
for (var j = 0; j < swatches.length; j++) {
switch (swatches[j].name) {
case '[None]':
case '[Registration]':
case 'BRIGHT PINK - Poly 775':
case 'White':
case 'C=0 M=0 Y=0 K=100':
case 'Black':
// ignore these
continue swatchesLoop;
default:
addSwatchNameToText(textFrame, swatches[j]);
break;
}
}
}
function addSwatchNameToText(text, swatch) {
var col = text.textRange.characters.add('\r' + swatch.name);
col.fillColor = swatch.color;
};
})();
Copy link to clipboard
Copied
This works fantastically! Thank you so much!
Copy link to clipboard
Copied
Great! You're welcome.
Find more inspiration, events, and resources on the new Adobe Community
Explore Now