Photoshop CS4自動化作戦

全レイヤー内に特定の文字があるかどうか調べ確認しながら置換させる

■プログラム説明
 全レイヤー内に特定の文字があるかどうかを調べ確認しながら置換します。prompt()を使ってユーザーに調べたい文字を入力させます。正規表現文字列も使えます。このため*や.など、そのまま入力しただけでは駄目な文字がいくつかあります。
 レイヤー情報はactiveDocument.artLayersに入っているので、for()でレイヤー数分だけ繰り返すようにします。次にレイヤーがテキストかどうかを調べ、内容を読み出してmatch()で一致する文字があるかどうかを調べます。一致した場合には確認のダイアログを表示しユーザーがyesボタンを押した場合のみreplace()を使って文字列を置換します。

■ソースコード
str = prompt("調べる文字を入れて下さい(正規表現)","今日");
repStr = prompt("置き換える文字を入れて下さい","明日");
regObj = new RegExp(str,"g");
layObj = activeDocument.artLayers;
for (i=0; i<layObj.length; i++)
{
if (layObj[i].kind == LayerKind.TEXT)
{
txt = layObj[i].textItem.contents;
result = txt.match(regObj);
if (result)
{
flag = confirm(layObj[i].name.substr(0,5)+"...レイヤーに該当文字がありますが、どうしますか?");
if (flag)
{
layObj[i].textItem.contents = txt.replace(regObj, repStr);
}
}
}
}


■使い方
1:あらかじめドキュメントを開いておきます。
2:スクリプトを実行します。
3:文字入力ダイアログが表示されるので調べる文字を入れます。正規表現も使えます。
4:全レイヤーを調べ該当する文字がある場合に確認ダイアログを表示します。yesを押すと文字列を置換しnoを押すと、そのままになります。


■ポイント
 なし