Photoshopでレイヤー名を置換するJSX


仕事なり趣味なりでPhotoshopをいじることはあるんですが、時々したくなるのがレイヤー名の置換。標準の機能でそれくらいできればいいのに…と思いますが、無いようですし、拡張機能を使えば自作できるので作りました。

本当は所謂テキストエディタみたいなウィンドウの出し方がわかればよかったんですが、JavaScriptのpromptで入力させてごまかしてます。

JSXファイルの配置場所は、Windows7でCS5(64bit)の標準だと

C:\Program Files\Adobe\Adobe Photoshop CS5 (64 Bit)\Presets\Scripts

ですかね。

コードはこちら。

/**
* レイヤー名置換 JSX
*
* @version 1.0.0
* @author sarifs
*/
var _layerList = [],
main = function(){
var dialog = createDialog();
dialog.btnOk.onClick = function(){
var document = activeDocument;
var layerList = document.layers;
getLayer(layerList);
var originalText = dialog.txtOriginal.text;
var replaceText = dialog.txtReplace.text;
for(var i = 0, num = _layerList.length; i < num; i++){
var layer = _layerList[i];
replaceLayerName(layer, originalText, replaceText);
}
dialog.close();
alert("処理が完了しました。");
};
dialog.show();
},
createDialog = function(){
var dialog = new Window("dialog", "レイヤー名を検索して置換", [200, 100, 500, 230]);
dialog.btnOk = dialog.add("button", [160, 90, 230, 90 + 25], "OK", {name:"ok"});
dialog.btnCancel = dialog.add("button", [70, 90, 140, 90 + 25], "Cancel", {name:"cancel"});
dialog.stxtOriginal = dialog.add("statictext", [20, 12, 100, 10 + 25], "検索文字列");
dialog.txtOriginal = dialog.add("edittext", [120, 10, 280, 10 + 25], "");
dialog.stxtReplace = dialog.add("statictext", [20, 52, 100, 50 + 25], "置換文字列");
dialog.txtReplace = dialog.add("edittext", [120, 50, 280, 50 + 25], "");
return dialog;
},
getLayer = function(layerList){
for(var i = 0, num = layerList.length; i < num; i++){
var layer = layerList[i];
if(layer.typename == "LayerSet"){
getLayer(layer.layers);
}
_layerList.push(layer);
}
},
replaceLayerName = function(layer, orgTxt, repTxt){
var reg = new RegExp(orgTxt, "g");
var name = layer.name;
if(reg.test(name)){
var isVisible = layer.visible;
layer.name = name.replace(reg, repTxt);
layer.visible = isVisible;
}
};
main();

Win7+CS5,CS6での動作は一応確認しましたが、誤動作による責任は負えませんので試してからお使いください。

使い方は、Photoshopで何かしらPSDファイルを開いている時に、スクリプト→このJSXで実行して、

  1. 検索文字列を入力→Enter
  2. 置換する文字を入力→Enter

で置換されます。

ウィンドウの出し方がわかったらアップデートしたいです。

追記@2012/07/20

ウィンドウの出し方がわかったのでアップデートしました。Gistの元データを書き換えるとこちらのも変わるんですね…。

追記@2016/03/31

不具合修正とアップデートを行いました。

「Photoshopでレイヤー名を置換するJSX」への3件のフィードバック

  1. 友人からの紹介でこのページを拝見いたしました。
    大変参考になると同時に感謝しております。
    ありがとうございます。

  2. はじめまして。
    自分のために作ったものではありますが、お役に立てたのでしたら幸いです。

  3. 大量のレイヤー名置換に活用させていただきました。
    シンプルで使いやすく、時間の短縮になり大変感謝しております。
    ありがとうございました。

sacrifs へ返信する コメントをキャンセル

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です