GradientInfoCopy.jsx

// Adobe Illustrator用スクリプト
// 現在の塗りボックスがグラデーションの場合、その情報を取得してクリップボードにコピーします。

#target illustrator

function getGradientInfoFromFillBox() {
    if (!app.documents.length) {
        alert("ドキュメントが開かれていません。");
        return;
    }

    var doc = app.activeDocument;

    try {
        // 現在の塗りの情報を取得
        var fillColor = doc.defaultFillColor;

        // 塗りがグラデーションか確認
        if (fillColor.typename !== "GradientColor") {
            alert("現在の塗りボックスはグラデーションではありません。");
            return;
        }

        var gradient = fillColor.gradient;
        var gradientType = gradient.type === GradientType.LINEAR ? "Linear" : "Radial";
        var gradientAngle = fillColor.angle;
        var stops = gradient.gradientStops;

        // グラデーション情報を取得
        var gradientInfo = "種類: " + gradientType + "\n";
        gradientInfo += "角度: " + gradientAngle + "\u00b0\n";

        for (var i = 0; i < stops.length; i++) {
            var stop = stops[i];
            var color = stop.color;
            var hexColor = rgbToHex(color.red, color.green, color.blue);
            // gradientInfo += "loop>>>  " + i + " \n";
            gradientInfo += "カラーコード    : " + hexColor + "\n";
            gradientInfo += "位置              : " + (stop.rampPoint).toFixed(4) + "%\n";

            // スライダーの位置はstop.midPointで取得する
            if (i != stops.length - 1) {
                gradientInfo += "位置(中間点) : " + (stop.midPoint).toFixed(4) + "%\n";
            }
        }

        // 情報をクリップボードにコピー
        copyToClipboard(gradientInfo);
        // alert("グラデーション情報をクリップボードにコピーしました:\n\n" + gradientInfo);

    } catch (e) {
        alert("塗りボックスの情報を取得できませんでした。エラー: " + e.message);
    }
}

// RGB値をHEXコードに変換
function rgbToHex(r, g, b) {
    function componentToHex(c) {
        var hex = Math.round(c).toString(16);
        return hex.length === 1 ? "0" + hex : hex;
    }
    return "#" + componentToHex(r) + componentToHex(g) + componentToHex(b);
}

// 文字列をクリップボードにコピー
function copyToClipboard(text) {
    try {
        var tempFile = new File(Folder.temp + "/clipboard.txt");
        tempFile.open("w");
        tempFile.write(text);
        tempFile.close();
        tempFile.execute();
    } catch (e) {
        alert("クリップボードにコピーできませんでした。エラー: " + e.message);
    }
}

// スクリプトを実行
getGradientInfoFromFillBox();