CMYKモードで、オブジェクトの2色間で色相グラデーションを作成します。
function createCMYKHueGradient() {
    var doc = app.activeDocument;
    var sel = doc.selection;
    if (sel.length != 2) {
        alert("2つのオブジェクトを選択してください。");
        return;
    }
    var obj1 = sel[0];
    var obj2 = sel[1];
    if (!obj1.filled || !obj2.filled) {
        alert("選択したオブジェクトには塗りが必要です。");
        return;
    }
    var color1 = obj1.fillColor;
    var color2 = obj2.fillColor;
    if (!(color1.typename == "CMYKColor" && 
        color2.typename == "CMYKColor")) {
        alert("CMYKカラーのみ対応しています。");
        return;
    }
    // ユーザーにステップ数を入力させる
    var steps = parseInt(prompt("
        グラデーションのステップ数を入力してください:", "10"), 10);
    if (isNaN(steps) || steps < 1) {
        alert("有効なステップ数を入力してください。");
        return;
    }
    // CMYK を RGB に変換
    var rgb1 = cmykToRgb(color1.cyan, color1.magenta, 
        color1.yellow, color1.black);
    var rgb2 = cmykToRgb(color2.cyan, color2.magenta, 
        color2.yellow, color2.black);
    // RGB を HSB に変換
    var hsb1 = rgbToHsb(rgb1[0], rgb1[1], rgb1[2]);
    var hsb2 = rgbToHsb(rgb2[0], rgb2[1], rgb2[2]);
    // 色相の補間
    var deltaH = (hsb2[0] - hsb1[0]) / (steps + 1);
    var deltaS = (hsb2[1] - hsb1[1]) / (steps + 1);
    var deltaB = (hsb2[2] - hsb1[2]) / (steps + 1);
    var startX = obj1.left;
    var width = obj1.width;
    var spacing = width + 10; // 配置間隔
    for (var i = 1; i <= steps; i++) {
        var newH = hsb1[0] + deltaH * i;
        var newS = hsb1[1] + deltaS * i;
        var newB = hsb1[2] + deltaB * i;
        var rgb = hsbToRgb(newH, newS, newB);
        // RGB を CMYK に変換
        var cmyk = rgbToCmyk(rgb[0], rgb[1], rgb[2]);
        var newColor = new CMYKColor();
        newColor.cyan = cmyk[0];
        newColor.magenta = cmyk[1];
        newColor.yellow = cmyk[2];
        newColor.black = cmyk[3];
        var newObj = obj1.duplicate();
        newObj.left = startX + i * spacing;
        newObj.fillColor = newColor;
    }
}
// CMYK から RGB に変換
function cmykToRgb(c, m, y, k) {
    var r = 255 * (1 - c / 100) * (1 - k / 100);
    var g = 255 * (1 - m / 100) * (1 - k / 100);
    var b = 255 * (1 - y / 100) * (1 - k / 100);
    return [r, g, b];
}
// RGB から CMYK に変換
function rgbToCmyk(r, g, b) {
    var c = 1 - (r / 255);
    var m = 1 - (g / 255);
    var y = 1 - (b / 255);
    var k = Math.min(c, m, y);
    if (k == 1) {
        return [0, 0, 0, 100];
    }
    c = ((c - k) / (1 - k)) * 100;
    m = ((m - k) / (1 - k)) * 100;
    y = ((y - k) / (1 - k)) * 100;
    k = k * 100;
    return [c, m, y, k];
}
// 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 /= 6;
    }
    return [h * 360, 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];
}
createCMYKHueGradient();
任意の2色のオブジェクトを選択して実行すると生成されるグラデーションの間隔を指定します。つまりグラデの数は「指定数-1」なので、10と指定すれば9になります。
上は処理結果です。下のグラデーションは、比較のためのブレンドによるグラデーション結果です。



 
 
 

 
