Illustratorで選択したオブジェクトのユーザー指定のタック値を確認します。グラデーションに対応。
JavaScriptでAI遊び 104 <br>Illustratorで選択したオブジェクトのタック値を確認 2026/08/17
// 選択オブジェクトからCMYK合計値(TAC)が指定値以上のものだけを選択
if (app.documents.length == 0) {
alert("ドキュメントを開いてください。");
} else {
var doc = app.activeDocument;
if (doc.documentColorSpace != DocumentColorSpace.CMYK) {
alert("CMYKドキュメントのみ対応です。");
} else {
var limit = Number(prompt("CMYK合計値(%)以上を選択", "300"));
if (!isNaN(limit)) {
var sel = doc.selection;
if (sel.length == 0) {
alert("オブジェクトを選択してください。");
} else {
var keep = [];
for (var i = 0; i < sel.length; i++) {
if (checkItem(sel[i], limit)) {
keep.push(sel[i]);
}
}
doc.selection = null;
for (var i = 0; i < keep.length; i++) {
keep[i].selected = true;
}
alert(keep.length + " 個選択しました。");
}
}
}
}
function checkItem(item, limit) {
switch (item.typename) {
case "GroupItem":
for (var i = 0; i < item.pageItems.length; i++) {
if (checkItem(item.pageItems[i], limit)) return true;
}
return false;
case "CompoundPathItem":
for (var i = 0; i < item.pathItems.length; i++) {
if (checkItem(item.pathItems[i], limit)) return true;
}
return false;
case "PathItem":
if (item.filled && checkColor(item.fillColor, limit))
return true;
if (item.stroked && checkColor(item.strokeColor, limit))
return true;
return false;
default:
return false;
}
}
function checkColor(col, limit) {
// 通常のCMYKカラー
if (col.typename == "CMYKColor") {
return (
col.cyan +
col.magenta +
col.yellow +
col.black
) >= limit;
}
// グラデーション
if (col.typename == "GradientColor") {
var stops = col.gradient.gradientStops;
for (var i = 0; i < stops.length; i++) {
var c = stops[i].color;
if (c.typename == "CMYKColor") {
var total =
c.cyan +
c.magenta +
c.yellow +
c.black;
if (total >= limit)
return true;
}
}
}
return false;
}
チェックしたいオブジェクトを選択して実行すると・・・
CMYKの合計値を求めてくるので適宜入力して実行すれば・・・




















































