Copy link to clipboard
Copied
hello,
I'm new to programming and I'm trying to create a .jsx to make an action where a folder is created and some specific colour swatches are grouped in that folder.
So far I have only been able to create the folder, but I don't know how to make the colour swatches to be selected and put inside this folder.
Could someone help me?
thanks
Well the script works perfectly for me. I chose all the "BM" swatches to add to a swatch group:
Here is the exact script I used:
(function () {
// get reference to active document
var doc = app.activeDocument;
// get reference to each color swatches I want, stored in array
var mySwatches = [
doc.swatches.getByName('BM BLACK'),
doc.swatches.getByName('BM WHITE'),
doc.swatches.getByName('BM BROWN'),
doc.swatches.getByN
...
Copy link to clipboard
Copied
Hi @monica_5152, here is some code to show you the basics. It will work with the demo.pdf file attached.
(function () {
// get reference to active document
var doc = app.activeDocument;
// get reference to each color swatches I want, stored in array
var mySwatches = [
doc.swatches.getByName('CMYK Red'),
doc.swatches.getByName('CMYK Yellow'),
doc.swatches.getByName('CMYK Green'),
doc.swatches.getByName('CMYK Cyan'),
doc.swatches.getByName('CMYK Blue'),
doc.swatches.getByName('CMYK Magenta'),
];
// create a swatch group
var mySwatchGroup = doc.swatchGroups.add();
mySwatchGroup.name = 'Excellent CMYK Colors';
// add my swatches to the color group
for (var i = 0; i < mySwatches.length; i++) {
mySwatchGroup.addSwatch(mySwatches[i]);
}
})();
You will need to look at the scripting API documentation, such as for Swatch, Swatches, SwatchGroup, SwatchGroups.
Good luck!
- Mark
Copy link to clipboard
Copied
Hii 🙂 , thank you very much for the answer...Although unfortunately it doesn't work for me, I think the problem is that my swatches are not CMYK, they are spot colours (pantones, etc)...Is it possible that this is the error?
Thank you very much
Copy link to clipboard
Copied
Oh, so what happens when you run the script? Do you get an error? I just converted some colours in my demo document into spots and also non-globals and the code worked perfectly. If you look at the docs for SwatchGroup, there is an "addSpot" method. We probably don't need it if your colours are already in swatches.
Maybe you could post a little demo document with your colours, and include the code you are using? We'll get to the bottom of it!
- Mark
Copy link to clipboard
Copied
Hi!
Well the other part I have done it by illustrator actions. basically is to delete the samples that are not used. but then I would like that the remaining ones are grouped in a folder, to be able to do it all from an action.
this is the error that comes out when i run the script.
I don't know if it is possible to do that.
Anyway, thank you very much for your help. 🙂
Copy link to clipboard
Copied
Hi @monica_5152 , @m1b script would work irrespective of the type of the swatch as CMYK or RGB. You need to use the name of the your swatches in place of 'CMYK Red', 'CMYK Yellow', etc. like below
(function () {
// get reference to active document
var doc = app.activeDocument;
// get reference to each color swatches I want, stored in array
var mySwatches = [
doc.swatches.getByName('BM BLACK'),
doc.swatches.getByName('BM RED'),
doc.swatches.getByName('BM GOLD'),
doc.swatches.getByName('BM SILVER'),
];
// create a swatch group
var mySwatchGroup = doc.swatchGroups.add();
mySwatchGroup.name = 'Excellent CMYK Colors';
// add my swatches to the color group
for (var i = 0; i < mySwatches.length; i++) {
mySwatchGroup.addSwatch(mySwatches[i]);
}
})();
The error that you are getting it may be of the following. reason:
1. By mistake array of swatches is not closed correctly and var keyword is not used at proper statment.
2. You have not updated the swtaches names in teh script as per the AI document.
Copy link to clipboard
Copied
yes! i did that but it still doesn't do what i want, i mean it creates the folder but doesn't insert the swatches inside the folder.... I have changed the names to the ones I have in the swatches list, I have even changed the names of the swatches themselves, but it doesn't work, is it possible that it is because the document is an .ait?
I think it's not a problem of the names of the swatches, they are exactly the same... I don't know what it can be...
Copy link to clipboard
Copied
Hi @monica_5152 could you please post an example .ait file for us to try script with? It will be easy to solve I think.
Copy link to clipboard
Copied
Copy link to clipboard
Copied
Well the script works perfectly for me. I chose all the "BM" swatches to add to a swatch group:
Here is the exact script I used:
(function () {
// get reference to active document
var doc = app.activeDocument;
// get reference to each color swatches I want, stored in array
var mySwatches = [
doc.swatches.getByName('BM BLACK'),
doc.swatches.getByName('BM WHITE'),
doc.swatches.getByName('BM BROWN'),
doc.swatches.getByName('BM RED'),
doc.swatches.getByName('BM GOLD'),
doc.swatches.getByName('BM GOLD132'),
doc.swatches.getByName('BM SILVER'),
doc.swatches.getByName('BM BLUE'),
doc.swatches.getByName('BM GREEN'),
doc.swatches.getByName('BM YELLOW'),
doc.swatches.getByName('BM BLUE LA CAIXA'),
];
// create a swatch group
var mySwatchGroup = doc.swatchGroups.add();
mySwatchGroup.name = 'Excellent CMYK Colors';
// add my swatches to the color group
for (var i = 0; i < mySwatches.length; i++) {
mySwatchGroup.addSwatch(mySwatches[i]);
}
})();
Do you get the same result from this script? Maybe you need to share your exact script so we can test it with your sample document.
- Mark
Copy link to clipboard
Copied
Hello Mark, 🙂
I think the problem was that I had the ‘clear swatches’ action before the selection. I've changed the action and first I've set it to select the swatches and then to clean them. Everything is working fine! Thank you very much ^^ you have helped me a lot.
Copy link to clipboard
Copied
Glad to hear! Good luck with your scripting!