Amazonで商品を見るセール会場へ

Photoshopスクリプト(jsx)│全てのロックを解除する方法

Photoshopで作業中、いずれかのレイヤーにロックがかかっていて編集できない場面があります。

そうしたケースで役立つのが、すべてのロックを一括で解除するスクリプトです。

本記事では、レイヤーのロックを一括解除するJSXスクリプトの導入手順と処理の流れを解説します。

目次

スクリプトの導入方法

STEP 1: スクリプトの配置

Photoshopに関するほかの操作手順は、関連記事のまとめをご参照ください。

  1. 以下のコードをコピーし、unlockLayers.jsxというファイル名で保存

unlockLayers.jsx

function unlockLayers(){
    var topLayer = app.activeDocument.layers[0];
    app.activeDocument.activeLayer = topLayer;
    do {
      unlockLayer();
      selectLayerBelow();
    } while(topLayer != app.activeDocument.activeLayer);

    function unlockLayer() {
      if(app.activeDocument.activeLayer.isBackgroundLayer ) app.activeDocument.activeLayer.name = '背景';
      if(app.activeDocument.activeLayer.allLocked) app.activeDocument.activeLayer.allLocked = false;
      if(app.activeDocument.activeLayer.pixelsLocked && app.activeDocument.activeLayer.kind != LayerKind.TEXT) app.activeDocument.activeLayer.pixelsLocked = false;
      if(app.activeDocument.activeLayer.positionLocked) app.activeDocument.activeLayer.positionLocked = false;
      if(app.activeDocument.activeLayer.transparentPixelsLocked && app.activeDocument.activeLayer.kind != LayerKind.TEXT) app.activeDocument.activeLayer.transparentPixelsLocked = false;
    }

    function selectLayerBelow() {
      var desc = new ActionDescriptor();
      var ref = new ActionReference();
      ref.putEnumerated( charIDToTypeID( "Lyr " ), charIDToTypeID( "Ordn" ), charIDToTypeID( "Bckw" ) );
      desc.putReference( charIDToTypeID( "null" ), ref );
      desc.putBoolean( charIDToTypeID( "MkVs" ), false );
      executeAction( charIDToTypeID( "slct" ), desc, DialogModes.NO );
    }
 }
unlockLayers()
  1. Photoshopの「Scripts」フォルダに配置。
C:\Program Files\Adobe\Adobe Photoshop CC\Presets\Scripts
  1. Photoshopを再起動。

STEP 2: スクリプトの実行

  1. Photoshopを起動
  2. [ファイル] → [スクリプト] → [参照]からunlockLayers.jsxを選択。
  3. スクリプトを実行すると、ドキュメント内のロックが一括で解除されます。

スクリプトの内容

function unlockLayers(){
    var topLayer = app.activeDocument.layers[0];
    app.activeDocument.activeLayer = topLayer;
    do {
      unlockLayer();
      selectLayerBelow();
    } while(topLayer != app.activeDocument.activeLayer);

    function unlockLayer() {
      if(app.activeDocument.activeLayer.isBackgroundLayer ) app.activeDocument.activeLayer.name = '背景';
      if(app.activeDocument.activeLayer.allLocked) app.activeDocument.activeLayer.allLocked = false;
      if(app.activeDocument.activeLayer.pixelsLocked && app.activeDocument.activeLayer.kind != LayerKind.TEXT) app.activeDocument.activeLayer.pixelsLocked = false;
      if(app.activeDocument.activeLayer.positionLocked) app.activeDocument.activeLayer.positionLocked = false;
      if(app.activeDocument.activeLayer.transparentPixelsLocked && app.activeDocument.activeLayer.kind != LayerKind.TEXT) app.activeDocument.activeLayer.transparentPixelsLocked = false;
    }

    function selectLayerBelow() {
      var desc = new ActionDescriptor();
      var ref = new ActionReference();
      ref.putEnumerated( charIDToTypeID( "Lyr " ), charIDToTypeID( "Ordn" ), charIDToTypeID( "Bckw" ) );
      desc.putReference( charIDToTypeID( "null" ), ref );
      desc.putBoolean( charIDToTypeID( "MkVs" ), false );
      executeAction( charIDToTypeID( "slct" ), desc, DialogModes.NO );
    }
 }

unlockLayers();

スクリプトの仕組み

  1. レイヤーを最上位から順に走査
  2. 各レイヤーのロック状態を判定して解除
  3. 背景レイヤーも通常レイヤーに変換して編集可能に変更
  4. 順次下位のレイヤーへ処理を移行

本スクリプトを実行すれば、Photoshop内の全レイヤーのロックをまとめて解除できます。

この記事で紹介しているコードは、GitHubのMOTOKI-LLC/cg-method-codeにもまとめています。

レイヤーを操作するスクリプトは、ほかにもあります。

まとめ

✅ 全レイヤーのロックを一括解除できる

✅ ロックされた背景レイヤーも編集可能になる

✅ 標準のスクリプト機能から手軽に実行できる

レイヤーロックの解除作業を効率化したい場合に活用してください。

次に学ぶ・作業環境を選ぶ

学習を続けたい方や、作業環境を整えたい方は、目的に合うガイドをご覧ください。

Photoshopのおすすめ書籍

動作要件とPCの確認項目

周辺機器の優先度

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次