banner
CG艺术实验室

CG艺术实验室

数字艺术 / 视觉设计 / 技术分享 / 知识管理
tg_channel
facebook
x
github
bilibili
zhihu
email

LayerRenamer 1.0 スクリプトリリース、PS レイヤーの名前変更がこれまでになく簡単になりました

LayerRenamer 1.0 スクリプト公開、PS レイヤーのリネームがこれまでにないほど簡単 - 第 1 枚目の画像

はじめに#

グラフィックデザインでは、Photoshop を使用してレイヤー数が多い.psdファイルを扱う際、レイヤーを一つずつリネームするのは非常に面倒で時間がかかる作業です。

インターネットで調べてみると、各サイトでは対応するバージョンのプラグインをインストールする必要があったり、スクリプトの公開日が古く、すべてのレイヤーを一括でリネームするという非常に強引な方法が多かったです。Photoshop がこれほど長い間進化してきたのに、こんなにシンプルで効率的な機能が追加されていないのは驚くべきことです。

以下は、ネットで広く流通しているバージョンの参考です。

app.bringToFront();
var YourName = prompt("リネームするレイヤー名を入力してください",'入力してください')
if (documents.length == 0) {
    alert("レイヤーがありません");
}
else {
    var visibility = false; 
    var docRef = activeDocument;     
        changeLayerName(docRef);
}

function changeLayerName(layer){

    var layers = layer.layers;

    if(layers){

    for(var i = 0; i < layers.length; i ++){
        layers[i].name = YourName + [i];
        changeLayerName(layers[i]);
    }
}
}

私が必要とする機能は#

  • 現在選択しているレイヤーのみを変更する
  • レイヤーは任意の階層をサポートする
  • これらのレイヤーに番号のサフィックスを追加できる
  • できればレイヤーのcolor tag色ラベルも同時に変更できる

制作手順#

テキストエディタで新しいテキストファイルを作成し、以下のコードを貼り付けます。Adobe Photoshop 2023 のスクリプト機能を使用して、レイヤーの一括リネームを実現できます。このスクリプトは、現在のドキュメント内のすべての選択されたレイヤーを走査し、ユーザーにカスタマイズされたレイヤー名と番号の形式を入力するように促し、ユーザーが指定した形式に従って各レイヤーに名前を付けます。スクリプトは、レイヤーがレイヤーグループ内にあるかどうかを自動的に処理します。

#target photoshop
app.bringToFront();

if (app.documents.length === 0) {
    alert("開いているドキュメントがありません。");
    throw new Error("No document open.");
}

var doc = app.activeDocument;

var selectedLayers = getSelectedLayers();
if (selectedLayers.length === 0) {
    alert("選択されたレイヤーがありません。");
    throw new Error("No layers selected.");
}

var baseName = prompt("基本レイヤー名を入力してください:", "Layer");
var startNumber = parseInt(prompt("番号の開始値を入力してください:", "1"), 10);
var numberFormat = prompt("番号形式を入力してください(例:001、桁数を保持):", "001");

if (isNaN(startNumber) || !baseName || !numberFormat) {
    alert("無効な入力です。スクリプトを再実行してください。");
    throw new Error("Invalid input.");
}

renameLayers(selectedLayers, baseName, startNumber, numberFormat);

function getSelectedLayers() {
    var selectedLayers = [];
    var ref = new ActionReference();
    ref.putEnumerated(charIDToTypeID("Dcmn"), charIDToTypeID("Ordn"), charIDToTypeID("Trgt"));
    var desc = executeActionGet(ref);

    if (desc.hasKey(stringIDToTypeID('targetLayers'))) {
        var targetLayers = desc.getList(stringIDToTypeID('targetLayers'));
        for (var i = 0; i < targetLayers.count; i++) {
            var layerIndex = targetLayers.getReference(i).getIndex();
            selectedLayers.push(getLayerByIndex(layerIndex + 1)); 
        }
    } else {
        selectedLayers.push(doc.activeLayer);
    }
    return selectedLayers;
}

function getLayerByIndex(index) {
    var ref = new ActionReference();
    ref.putIndex(charIDToTypeID("Lyr "), index);
    var desc = executeActionGet(ref);
    var layerID = desc.getInteger(stringIDToTypeID("layerID"));
    return getLayerById(layerID);
}

function getLayerById(id) {
    var ref = new ActionReference();
    ref.putIdentifier(charIDToTypeID("Lyr "), id);
    var desc = executeActionGet(ref);
    return doc.layers.getByName(desc.getString(charIDToTypeID("Nm  ")));
}

function renameLayers(layers, baseName, startNumber, numberFormat) {
    for (var i = 0; i < layers.length; i++) {
        var currentNumber = (startNumber + i).toString();
        var formattedNumber = zeroPad(currentNumber, numberFormat.length);
        var newName = baseName + formattedNumber;
        layers[i].name = newName;
    }
}

function zeroPad(num, width) {
    while (num.length < width) {
        num = '0' + num;
    }
    return num;
}

上記のコードは、基本的なレイヤーのリネームと番号のソート機能を実現します。ファイル名をxxx.jsxとして保存すれば、スクリプトファイルが完成します。

使用手順:#

  1. Adobe Photoshop 2023 を開きます。
  2. リネームしたいレイヤーを選択します(レイヤーパネルで複数選択可能で、レイヤーグループ内のレイヤーもサポートしています)。
  3. ファイル -> スクリプト -> 参照...に進み、保存したスクリプトファイルを選択します。
  4. スクリプトを実行すると、3 つのプロンプトが表示されます:
  • 最初のプロンプトでは、基本レイヤー名を入力するよう求められます。例:"Layer"。
  • 2 番目のプロンプトでは、番号の開始値を入力するよう求められます。例:"1"。
  • 3 番目のプロンプトでは、番号形式を入力するよう求められます。例:"001"、番号の桁数が一致するようにします。
  • LayerRenamer 1.0 スクリプト公開、PS レイヤーのリネームがこれまでにないほど簡単 - 第 2 枚目の画像
  1. 確認を選択すると、スクリプトは設定した形式に従って選択したレイヤーを自動的にリネームします。

上級版#

上記の機能は基本的には十分ですが、色ラベルを同時に変更する機能を追加したい場合は上級版をダウンロードしてください。効果は以下の通りです:

LayerRenamer 1.0 スクリプト公開、PS レイヤーのリネームがこれまでにないほど簡単 - 第 3 枚目の画像

ダウンロードリンク:

【LayerRenamer_PS-2023.jsx】 https://16b87ca7d6.znas.cn/AppH5/share/?nid=LIYDEMJQGBBDEOCELBIFU&code=r1DtQDtFZobo1ai8Jd0UylatvnNkQ3xcodyiJBPo4ejLcOfybeyVGW0o3LOTKTHF&mode=file&display=list 有効期限 7 日、抽出パスワード:6633

この記事は少数派に初めて掲載されました。

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。