Photoshopで作業中、いずれかのレイヤーにロックがかかっていて編集できない場面があります。
そうしたケースで役立つのが、すべてのロックを一括で解除するスクリプトです。
本記事では、レイヤーのロックを一括解除するJSXスクリプトの導入手順と処理の流れを解説します。
目次
スクリプトの導入方法
STEP 1: スクリプトの配置
Photoshopに関するほかの操作手順は、関連記事のまとめをご参照ください。
あわせて読みたい


Photoshopの使い方|保存・レイヤー・一括処理から探す
Photoshopでやりたい作業から記事を選べます。複数の画像に同じ編集を繰り返す場合は「アクション・一括処理」、JSXファイルを初めて使う場合は「スクリプトの導入・実…
- 以下のコードをコピーし、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()- Photoshopの「Scripts」フォルダに配置。
C:\Program Files\Adobe\Adobe Photoshop CC\Presets\Scripts- Photoshopを再起動。
STEP 2: スクリプトの実行
- Photoshopを起動
- [ファイル] → [スクリプト] → [参照]から
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();
スクリプトの仕組み
- レイヤーを最上位から順に走査
- 各レイヤーのロック状態を判定して解除
- 背景レイヤーも通常レイヤーに変換して編集可能に変更
- 順次下位のレイヤーへ処理を移行
本スクリプトを実行すれば、Photoshop内の全レイヤーのロックをまとめて解除できます。
この記事で紹介しているコードは、GitHubのMOTOKI-LLC/cg-method-codeにもまとめています。
レイヤーを操作するスクリプトは、ほかにもあります。
あわせて読みたい


Photoshopスクリプト(jsx)│全マスクを表示・非表示する方法
PhotoshopでグループのマスクだけをON/OFFするスクリプトを紹介します。 個別のレイヤーマスクを残したまま、グループマスクだけを一括管理できます。 グループのマスク…
あわせて読みたい


Photoshopスクリプト(jsx)│レイヤーを縦/横にピッタリ並べる方法
Photoshopで選択したレイヤーを隙間なく縦または横に整列させるスクリプトを紹介します。 同サイズの画像を規則正しく並べる作業に適しています。 https://youtu.be/nKX…
あわせて読みたい


Photoshopスクリプト(jsx)│選択したレイヤーを別ドキュメントに複製する方法
Photoshopで選択したレイヤーを新規ドキュメントに複製し、自動でトリミングするスクリプトを紹介します。 UI素材の書き出し前調整や、個別レイヤーの切り出し作業を効…
あわせて読みたい


Photoshopスクリプト(jsx)│一括でベタ塗りレイヤーの色をまとめて変更する方法│Ditto
イラスト制作時にベースカラーの塗りを「ベタ塗り調整レイヤー+マスク」で管理すると、後から色を変更しやすくなります。 しかし、対象のレイヤーが多いと1つずつ変更…
まとめ
✅ 全レイヤーのロックを一括解除できる
✅ ロックされた背景レイヤーも編集可能になる
✅ 標準のスクリプト機能から手軽に実行できる
レイヤーロックの解除作業を効率化したい場合に活用してください。
