条件付きでテキストフレームを選択(1) (Illustrator CS3/CS4編)

今回は条件付きでテキストフレームを選択するスクリプトです。Illustratorには同じ塗り色のパスを選択する、線幅が同じパスを選択するといった条件付き選択機能が用意されています。条件付き選択は結構便利ですが、メニューから選択できる項目は少なく、こういう条件のものを選択したいけど手作業でやるしかない(探すしかない)こともあります。そういう時こそスクリプトの出番です。
今回のスクリプトはテキストフレーム内の1文字でもマゼンタが50%以上使われている場合、その文字を含むテキストフレーム全体を選択します。

function colorChecker(srcObj){
srcObj.selected = false;
for(var j=0; j<srcObj.characters.length; j++){
colObj = srcObj.characters[j].fillColor;
if (colObj.magenta >= 50){
srcObj.selected = true;
return;
}
}
}
function mainProc(){
if (app.documents.length < 1){
alert("ドキュメントを開いてから実行してください");
return;
}
if (app.activeDocument.documentColorSpace != DocumentColorSpace.CMYK){
alert("ドキュメントのカラーモードをCMYKにしてから実行してください");
return;
}
var textObj = app.activeDocument.textFrames;
if (textObj.length < 1){
alert("選択すべきテキストフレームがありません");
return;
}
for(var i=0; i<textObj.length; i++){
colorChecker(textObj[i]);
}
}
mainProc();

このスクリプトでは、すでに選択してあるテキストフレームがあった場合、選択を解除します。もし、すでに選択してあるテキストフレームの選択を解除したくない場合(選択を追加する形)には以下の一行を削除してください。

srcObj.selected = false;

マゼンタが50%以上ではなく25%未満の場合に選択させたい場合には

if (colObj.magenta >= 50)

 を

if (colObj.magenta < 25)

 に変更してください。マゼンタではなく他の色の場合は以下のようになります。

if (colObj.cyan >= 50) シアンが50%以上なら選択
if (colObj.yellow >= 50) 黄色が50%以上なら選択
if (colObj.black >= 50) 黒が50%以上なら選択

 少し複雑な選択であれば以下のように&&を使って書きます。&&は両方の条件を満たした時という意味です。

if ((colObj.cyan >= 50) && (colObj.yellow == 0)) シアンが50%以上で黄色が0%なら選択

 CMYKまとめて&&を使って書くこともできます。以下の場合はシアンが50%以上、マゼンタが40%以下、黄色が0%で黒が10%ならテキストフレームが選択されます。

if ((colObj.cyan >= 50) && (colObj.magenta <= 40) && (colObj.yellow == 0) && (colObj.black == 10))

 

[サンプルをダウンロード]