見出し画像

【Photoshopスクリプト】レイヤー名の「[左]を[_L]に、[右]を[_R]」にする

① 実行するとすべてのレイヤーに対して[左][右]の文字を削除し、末尾に[_L][_R]と付けます
② リネームされたレイヤーはpsdファイルと同じ階層に「renamed_layers.txt」としてテキストファイルで保存されます

たとえば
・「左横髪」というレイヤーは「横髪_L」となります
・「右目」というレイヤーは「目_R」となります
リネームサンプル画像は以下のとおりです

複数の左右の文字が入っている想定はしていないので、そこはご愛嬌ということで

左と右の漢字の見た目が似ていて認識しづらいのでLとRに変換するものを作ろうと思いました

反対に「LRの文字を左右に変えるスクリプト」も考えてみたのですが、LとRを使う英単語なんてたくさんあるので難しいと思いました

日本語で左右の文字をつかう漢字は明確に方向を示す場合を除いてほぼない(「左遷」や「証左」みたいにパーツ名として使われなさそうなものがほとんど)ので、実際のところ大きな問題はないと思います

以下コード全体です。

function renameLayers(layer) {
    var renamedLayers = [];
    function processLayer(layer) {
        if (layer.typename === "LayerSet") {
            for (var i = 0; i < layer.layers.length; i++) {
                processLayer(layer.layers[i]);
            }
        } else {
            var name = layer.name;
            var newName = name;
            var renamed = false;

            // "右"を"_R"に変換
            if (newName.indexOf("右") !== -1) {
                newName = newName.split("右").join("") + "_R";
                renamed = true;
            }
            // "左"を"_L"に変換
            if (newName.indexOf("左") !== -1) {
                newName = newName.split("左").join("") + "_L";
                renamed = true;
            }

            if (renamed) {
                layer.name = newName;
                renamedLayers.push(newName);
            }
        }
    }

    processLayer(layer);

    return renamedLayers;
}

function saveRenamedLayers(renamedLayers, savePath) {
    var file = new File(savePath);
    file.open("w");

    for (var i = 0; i < renamedLayers.length; i++) {
        file.writeln(renamedLayers[i]);
    }

    file.close();
}

if (app.documents.length > 0) {
    var doc = app.activeDocument;
    var renamedLayers = [];

    // 全てのレイヤーを処理
    for (var i = 0; i < doc.layers.length; i++) {
        renamedLayers = renamedLayers.concat(renameLayers(doc.layers[i]));
    }
    if (renamedLayers.length > 0) {
        // PSDファイルと同じ階層に保存
        var docPath = doc.path;
        var savePath = docPath + "/renamed_layers.txt";
        saveRenamedLayers(renamedLayers, savePath);
        alert("レイヤーのリネームが完了しました。リネームされたレイヤー名はrenamed_layers.txtに保存されました。");
    } else {
        // リネームが一度もなかった場合のメッセージ
        alert("リネームされたレイヤーはありません。");
    }

} else {
    alert("ドキュメントが開かれていません。");
}

※本記事のコードは参考としてご利用ください

ここから先は

0字
マガジン中のスクリプトのコードはすべて無料で見ることができます。 Live2D制作のためのpsdファイル作業を効率化、スピードアップしたい方におすすめです。 役にたったら投げ銭としてマガジンを購入していただけると活動の糧になります。

作業効率化のためにつくった自分用のPhotoshopスクリプトです

この記事が気に入ったらチップで応援してみませんか?