ドキュメント上のスウォッチはSwatcheオブジェクトとして集約され、配列として取得します。

以下の例では、ドキュメントにあるすべてのスウォッチ名を書き出しています。

docSwch= app.activeDocument.swatches;
for(var i=0; i<docSwch.length; i++) {
	$.writeln ( docSwch[i].name ); 
}

 

スウォッチはカラーそのものではなく、カラーのエイリアス(ラッパークラス)として機能します。InDesignのカラーにはColorTintMixedInkGradientがあり、それらを一元的に取り扱うためのハンドルと考えて問題ありません。

例えばPageItemなどのfillColorプロパティから受け取るカラーは実体であるColorやTintというオブジェクトですが、fillColorプロパティにオブジェクトを渡すときは、実体の代わりにSwatcheオブジェクトを渡すことができます。

//「C=100 M=0 Y=0 K=0」というスウォッチがあるとして...
var swhObj= app.activeDocument.swatches.item('C=100 M=0 Y=0 K=0'); //Swatcheオブジェクトを取得
var selObj= app.activeDocument.selection[0]; //何らかのPageItemが選択されているとして...
selObj.fillColor= swhObj; //Swatcheオブジェクトを渡す

 

なお、スウォッチの名前を変更すると、同時に実体のカラー名も変更されます。

また、未使用のスウォッチについては、後述の<スウォッチの削除>を参照してください。

 

<プロパティについて>

 

Swatcheオブジェクトから取得できるプロパティは、実体オブジェクトに依存(前述)しますので、そのことに留意して取得しなければなりません。以下の例ではtry文を使ってそれに対処しています。

//swatchプロパティ一覧
var swhObj= app.activeDocument.swatches;
$.writeln ( 'num= '+swhObj.length ); 
for (var i=0; i<swhObj.length; i++) {
    $.writeln ( '- - -' );
    $.writeln ( 'name= '+swhObj[i].name );
    try{ $.writeln ( 'model= '+swhObj[i].model.toString() ); }catch( e ){}
    try{ $.writeln ( 'space= '+swhObj[i].space.toString() ); }catch( e ){}
    try{ $.writeln ( 'colorValue= '+swhObj[i].colorValue.toString() ); }catch( e ){}
    try{ $.writeln ( 'baseColor= '+swhObj[i].baseColor.name ); }catch( e ){}
    try{ $.writeln ( 'tintValue= '+swhObj[i].tintValue ); }catch( e ){}
    try{ $.writeln ( 'inkList= '+swhObj[i].inkList.toString() ); }catch( e ){}
    try{ $.writeln ( 'inkPercentage= '+swhObj[i].inkPercentages ); }catch( e ){}
}

※各プロパティについてはカラーについて(概要))を参照。

 

<スウォッチの追加>

 

スウォッチは各種のカラー(実体)が作成されたときに作られます(参照:カラーについて(概要))。

 

<スウォッチの削除>

 

スウォッチの削除はremove関数を使います。

var swhObj= app.activeDocument.swatches.item('C=75 M=5 Y=100 K=0');
swhObj.remove();

このとき、実体のカラーも同時に削除されます。

 

また、削除するときに置き換えたいスウォッチがある場合は、以下のように置き換えるSwatcheオブジェクトを指定します。

var swhObj= app.activeDocument.swatches.item('C=100 M=0 Y=100 K=0');
var repSwhObj= app.activeDocument.swatches.item('Paper');
swhObj.remove(repSwhObj);

 

未使用のスウォッチはドキュメントのunusedSwatchesプロパティから配列で取得できます。

ただし、 スウォッチにはInDesignが内部で使用している無名のもの(カラー)があり、それらも未使用のスウォッチとして取得する場合があります。

よって、unusedSwatchesプロパティで取得したスウォッチは、それらをチェックしながら削除しなければなりません。

var objDoc= app.activeDocument; // アクティブドキュメント
var swhObj= objDoc.unusedSwatches; // 未使用のスウォッチ
for( var i=0; i<swhObj.length; i++){
    // 名前のないスウォッチは消さない
	if ( swhObj[i].name !='' ) {
		swhObj[i].remove();
	}
}

 

<注意点>

スウォッチは存在しないものを指定しても、表面上は取得できたことになってしまいます。

これはカラー名についても同様で、対処法はカラーについて(概要)のページに書いてあります。

 

 

Joomla templates by a4joomla