Swatch (Color)
Combine swatches with same value but different name
Function normalizeCMYK was written by Marc Autret. The source is here.

function normalizeCMYK(/*Document*/doc, swa,a,r,o,t,k,i)
// -------------------------------------
// Remove CMYK swatch duplicates and set every name in `C= M= Y= K=` form.
{
if( !doc ) return;
const __ = $.global.localize;
const CM_PROCESS = +ColorModel.PROCESS;
const CS_CMYK = +ColorSpace.CMYK;
swa = doc.swatches;
a = doc.colors.everyItem().properties;
r = {};
// Gather CMYK swatches => { CMYK_Key => {id, name}[] }
// ---
while( o=a.shift() )
{
if( o.model != CM_PROCESS ) continue;
if( o.space != CS_CMYK ) continue;
t = swa.itemByName(o.name);
if( !t.isValid ) continue;
for( i=(k=o.colorValue).length ; i-- ; k[i]=Math.round(k[i]) );
k = __("C=%1 M=%2 Y=%3 K=%4",k[0],k[1],k[2],k[3]);
(r[k]||(r[k]=[])).push({ id:t.id, name:t.name });
}
// Remove dups and normalize names.
// ---
for( k in r )
{
if( !r.hasOwnProperty(k) ) continue;
t = swa.itemByID((o=(a=r[k])[0]).id);
for( i=a.length ; --i ; swa.itemByID(a[i].id).remove(t) );
if( k == o.name ) continue; // No need to rename.
try{ t.name=k }catch(_){} // Prevent read-only errors.
}
};
normalizeCMYK(app.properties.activeDocument);
Convert Spot colors to Process
var myCols = app.activeDocument.colors;
for (i = 0; i < myCols.length; i++)
if (myCols[i].model == ColorModel.spot)
myCols[i].model = ColorModel.process;
Make color
var swatchRed = MakeColor("Red", ColorSpace.RGB, ColorModel.PROCESS, [255, 0, 0]);
var swatchGreen = MakeColor("Green", ColorSpace.RGB, ColorModel.PROCESS, [0, 255, 0]);
function MakeColor(colorName, colorSpace, colorModel, colorValue) {
var doc = app.activeDocument;
var color = doc.colors.item(colorName);
if (!color.isValid) {
color = doc.colors.add({name: colorName, space: colorSpace, model: colorModel, colorValue: colorValue});
}
return color;
}
