2色間のグラデーションを指定ステップ数の矩形に分割します。RGB版。グラデーションは2色間であれば線形、円形のどちらでも問題ありませんが、フリーグラデーションには未対応です。
function mmToPoints(mm) {
    return mm * 2.83465; // 1 mm ≈ 2.83465 pt
}
function interpolateColor(c1, c2, t) {
    var color = new RGBColor();
    color.red = c1.red + (c2.red - c1.red) * t;
    color.green = c1.green + (c2.green - c1.green) * t;
    color.blue = c1.blue + (c2.blue - c1.blue) * t;
    return color;
}
function createGradientStepsScaled() {
    if (app.documents.length === 0) {
        alert("ドキュメントを開いてください。");
        return;
    }
    var doc = app.activeDocument;
    var selection = doc.selection;
    if (selection.length !== 1 || selection[0].typename !== 
        "PathItem" || !selection[0].filled || selection[0].
        fillColor.typename !== "GradientColor") {
        alert("1つのグラデーション塗りのオブジェクトを
            選択してください。");
        return;
    }
    var gradient = selection[0].fillColor.gradient;
    if (gradient.gradientStops.length < 2) {
        alert("グラデーションに2つ以上の色が必要です。");
        return;
    }
    var steps = 
        parseInt(prompt("分割するステップ数を入力:", "10"), 10);
    if (isNaN(steps) || steps < 2) {
        alert("2以上の整数を入力してください。");
        return;
    }
    var totalWidthMM = 
        parseFloat(prompt("全体の幅(mm)を入力:", "100"));
    var totalHeightMM = 
        parseFloat(prompt("全体の高さ(mm)を入力:", "50"));
    if (isNaN(totalWidthMM) || isNaN(totalHeightMM) || 
        totalWidthMM <= 0 || totalHeightMM <= 0) {
        alert("正しい数値を入力してください。");
        return;
    }
    var totalWidth = mmToPoints(totalWidthMM);
    var totalHeight = mmToPoints(totalHeightMM);
    var rectWidth = totalWidth / steps;
    var rectHeight = totalHeight;
    var artboard = 
        doc.artboards[doc.artboards.getActiveArtboardIndex()];
    var artboardBounds = artboard.artboardRect;
    var centerX = (artboardBounds[0] + artboardBounds[2]) / 2;
    var centerY = (artboardBounds[1] + artboardBounds[3]) / 2;
    var startX = centerX - totalWidth / 2;
    var startY = centerY + totalHeight / 2;
    for (var i = 0; i < steps; i++) {
        var t = i / (steps - 1);
        // グラデーションストップ間の色を計算
        var lowerIndex = 0;
        var upperIndex = gradient.gradientStops.length - 1;
        for (var j = 0; j < gradient.gradientStops.length - 1; j++) {
            if (t >= gradient.gradientStops[j].rampPoint / 100 && 
            t <= gradient.gradientStops[j + 1].rampPoint / 100) {
                lowerIndex = j;
                upperIndex = j + 1;
                break;
            }
        }
        var tLerp = 
            (t - gradient.gradientStops[lowerIndex].rampPoint / 100) /
                    ((gradient.gradientStops[upperIndex].rampPoint / 100) - 
                    (gradient.gradientStops[lowerIndex].rampPoint / 100));
        var fillColor = 
            interpolateColor(gradient.gradientStops[lowerIndex].color, 
            gradient.gradientStops[upperIndex].color, tLerp);
        var rect = doc.pathItems.rectangle(startY, startX + i * 
            rectWidth, rectWidth, rectHeight);
        rect.filled = true;
        rect.fillColor = fillColor;
        rect.stroked = false;
    }
}
createGradientStepsScaled();

グラデーションを設定したオブジェクトを選択して実行すると・・・

結果の配置位置は中心です。


 
 
 

 
