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();