テキストレイヤーのみ色を付ける (Photoshop CS/CS2)

Photoshop CS/CS2でテキストレイヤーのみレイヤーパレットに表示されているレイヤーに色を付けるものです。以下のスクリプトはドキュメントのレイヤーパレットに表示されているレイヤーの色を赤色にするものです。


setLayerColor(colorName);
function setLayerColor(colorNameString)
{
var id21 = charIDToTypeID( "setd" );
var desc4 = new ActionDescriptor();
var id22 = charIDToTypeID( "null" );
var ref2 = new ActionReference();
var id23 = charIDToTypeID( "Lyr " );
var id24 = charIDToTypeID( "Ordn" );
var id25 = charIDToTypeID( "Trgt" );
ref2.putEnumerated( id23, id24, id25 );
desc4.putReference( id22, ref2 );
var id26 = charIDToTypeID( "T " );
var desc5 = new ActionDescriptor();
var id27 = charIDToTypeID( "Clr " );
var id28 = charIDToTypeID( "Clr " );
var id29 = charIDToTypeID( colorNameString ); // レイヤーカラー
desc5.putEnumerated( id27, id28, id29 );
var id30 = charIDToTypeID( "Lyr " );
desc4.putObject( id26, id30, desc5 );
executeAction( id21, desc4, DialogModes.NO );
}

指定するレイヤーの色を変更するには最初の行の"Rd "を変更します。この文字列が色の名前になっており、以下のものが指定できます。
"Rd "赤色
"Orng"橙色
"Ylw "黄色
"Grn "緑色
"Bl "青色
"Vlt "紫色
"Gry "灰色
"None"白色(色なし)

テキストレイヤーのみ色を付ける場合には以下のスクリプトになります。
colorName = "Rd ";
layObj = activeDocument.layers;
for (i=0; i<layObj.length; i++) {
if(layObj[i].kind == LayerKind.TEXT)
{
activeDocument.activeLayer = layObj[i];
setLayerColor(colorName);
}
}
function setLayerColor(colorNameString)
{
var id21 = charIDToTypeID( "setd" );
var desc4 = new ActionDescriptor();
var id22 = charIDToTypeID( "null" );
var ref2 = new ActionReference();
var id23 = charIDToTypeID( "Lyr " );
var id24 = charIDToTypeID( "Ordn" );
var id25 = charIDToTypeID( "Trgt" );
ref2.putEnumerated( id23, id24, id25 );
desc4.putReference( id22, ref2 );
var id26 = charIDToTypeID( "T " );
var desc5 = new ActionDescriptor();
var id27 = charIDToTypeID( "Clr " );
var id28 = charIDToTypeID( "Clr " );
var id29 = charIDToTypeID( colorNameString ); // レイヤーカラー
desc5.putEnumerated( id27, id28, id29 );
var id30 = charIDToTypeID( "Lyr " );
desc4.putObject( id26, id30, desc5 );
executeAction( id21, desc4, DialogModes.NO );
}

テキストレイヤーではなく他の種類のものにしたい場合には
if(layObj[i].kind == LayerKind.TEXT)

のLayerKind.TEXTを変更します。これは以下のものが指定できます。

LayerKind.BRIGHTNESSCONTRAST
LayerKind.CHANNELMIXER
LayerKind.COLORBALANCE
LayerKind.CURVES
LayerKind.GRADIENTFILL
LayerKind.GRADIENTMAP
LayerKind.HUESATURATION
LayerKind.INVERSION
LayerKind.LEVELS
LayerKind.NORMAL
LayerKind.PATTERNFILL
LayerKind.POSTERIZE
LayerKind.SELECTIVECOLOR
LayerKind.SMARTOBJECT
LayerKind.SOLIDFILL
LayerKind.TEXT
LayerKind.THRESHOLD


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