特に目的は無いのですが、色相・彩度・明度の反転実験の彩度版です。
CMYKでもRGBでも使えます。
#target illustrator
function invertSaturation() {
    var doc = app.activeDocument;
    var selection = doc.selection;
    if (!selection.length) {
        alert("オブジェクトを選択してください。");
        return;
    }
    for (var i = 0; i < selection.length; i++) {
        var obj = selection[i];
        if (obj.typename === "PathItem") {
            // 塗りの色を処理
            if (obj.filled) {
                obj.fillColor = invertSaturationColor(obj.fillColor);
            }
            // 線の色を処理
            if (obj.stroked) {
                obj.strokeColor = invertSaturationColor(obj.strokeColor);
            }
        }
    }
    alert("選択したオブジェクトの彩度を反転しました。");
}
// 色の彩度を反転する関数
// RGBカラー:彩度(Saturation)を 100 - 現在の彩度 に変更
function invertSaturationColor(color) {
    if (color.typename === "RGBColor") {
        var hsb = rgbToHsb(color.red, color.green, color.blue);
        hsb[1] = 100 - hsb[1]; // 彩度を反転
        var newRgb = hsbToRgb(hsb[0], hsb[1], hsb[2]);
        var newColor = new RGBColor();
        newColor.red = newRgb[0];
        newColor.green = newRgb[1];
        newColor.blue = newRgb[2];
        return newColor;
   } else if (color.typename === "CMYKColor") {
        // CMYKでの彩度反転(簡易的に補色を利用)
        // CMYKカラー:
        // 補色の考え方を利用し、C, M, Y の値を反転(K はそのまま)
        var newColor = new CMYKColor();
        newColor.cyan = 100 - color.cyan;
        newColor.magenta = 100 - color.magenta;
        newColor.yellow = 100 - color.yellow;
        newColor.black = color.black; // 黒は変更しない
        return newColor;
    }
    return color; // 変更なし
}
// RGB → HSB 変換
function rgbToHsb(r, g, b) {
    r /= 255; g /= 255; b /= 255;
    var max = Math.max(r, g, b), min = Math.min(r, g, b);
    var h, s, v = max;
    var d = max - min;
    s = max === 0 ? 0 : d / max;
    if (max === min) {
        h = 0;
    } else {
        switch (max) {
            case r: h = (g - b) / d + (g < b ? 6 : 0); break;
            case g: h = (b - r) / d + 2; break;
            case b: h = (r - g) / d + 4; break;
        }
        h *= 60;
    }
    return [h, s * 100, v * 100];
}
// HSB → RGB 変換
function hsbToRgb(h, s, v) {
    s /= 100; v /= 100;
    var c = v * s;
    var x = c * (1 - Math.abs((h / 60) % 2 - 1));
    var m = v - c;
    var r, g, b;
    if (h < 60) { r = c; g = x; b = 0; }
    else if (h < 120) { r = x; g = c; b = 0; }
    else if (h < 180) { r = 0; g = c; b = x; }
    else if (h < 240) { r = 0; g = x; b = c; }
    else if (h < 300) { r = x; g = 0; b = c; }
    else { r = c; g = 0; b = x; }
    return [(r + m) * 255, (g + m) * 255, (b + m) * 255];
}
// スクリプト実行
invertSaturation();
// RGBでは補色、CMYKでは黒の値が反転されるため、効果が異なります
左からCMYKで・・・
ベースチャート、カラー反転、カラー反転を2回実行
左からCMYKで・・・
ベースチャート、彩度反転、彩度反転を2回実行
左からRGBで・・・
ベースチャート、カラー反転、カラー反転を2回実行
左からRGBで・・・
ベースチャート、彩度反転、彩度反転を2回実行
以下も参考にしてください
JavaScriptでAI遊び 64 Illustratorでカラー設定の明度を反転 2025/08/31●
JavaScriptでAI遊び 62 Illustratorでカラー設定の色相を反転 2025/08/20●





 
 
 

 
