仕事なり趣味なりでPhotoshopをいじることはあるんですが、時々したくなるのがレイヤー名の置換。標準の機能でそれくらいできればいいのに…と思いますが、無いようですし、拡張機能を使えば自作できるので作りました。
本当は所謂テキストエディタみたいなウィンドウの出し方がわかればよかったんですが、JavaScriptのpromptで入力させてごまかしてます。
JSXファイルの配置場所は、Windows7でCS5(64bit)の標準だと
C:\Program Files\Adobe\Adobe Photoshop CS5 (64 Bit)\Presets\Scripts
ですかね。
コードはこちら。
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* レイヤー名置換 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で実行して、
- 検索文字列を入力→Enter
- 置換する文字を入力→Enter
で置換されます。
ウィンドウの出し方がわかったらアップデートしたいです。
追記@2012/07/20
ウィンドウの出し方がわかったのでアップデートしました。Gistの元データを書き換えるとこちらのも変わるんですね…。
追記@2016/03/31
友人からの紹介でこのページを拝見いたしました。
大変参考になると同時に感謝しております。
ありがとうございます。
はじめまして。
自分のために作ったものではありますが、お役に立てたのでしたら幸いです。
大量のレイヤー名置換に活用させていただきました。
シンプルで使いやすく、時間の短縮になり大変感謝しております。
ありがとうございました。