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

Photoshopスクリプト(jsx)│選択したレイヤーだけを表示・非表示する方法

Photoshopで選択したレイヤーのみを表示・非表示にするスクリプトを紹介します。

このスクリプトを使用すると、レイヤーパネルの目のアイコンを1つずつ切り替える手間を省き、元の表示状態にも素早く復帰できます。

2026年10月19日に、Photoshop 2026(27.11.0)とWindows 11 Proで記事のコードを実行し、表示がどう変わるかを確かめました。

1回目の実行で選んだレイヤーだけが表示され、2回目の実行で元の表示に戻りました。

ただし、表示されるのは選んだレイヤーのうち1つだけで、同じ文書で続けて使うと3回目の実行では何も隠れませんでした。

2026年10月20日にコードを直し、同じ文書で6回続けて実行した範囲では、複数選択したレイヤーの表示と元の表示への復帰を確認しました。

背景レイヤーが通常のレイヤーに変わる不具合も直しました。

詳しくは「Photoshop 2026で実行した結果」にまとめています。

Photoshopで選択したレイヤーのみを表示または非表示に切り替えて元の状態に復帰する様子。
目次

スクリプトを使用するメリット

  • 選択したレイヤーだけをすばやく表示・非表示に切り替えられる
  • 次の実行で、記録した表示・非表示へ戻せる(レイヤーの追加・削除などは対象外)
  • 手作業で目のアイコンを切り替えるより作業時間を短縮できる
スポンサーリンク

スクリプトで選択レイヤーのみを表示・非表示にする

このスクリプトを実行すると、選択したレイヤーを表示し、それ以外を非表示に切り替えられます。

スクリプトを実行して選択中のレイヤーのみを対象に表示や非表示を切り替える操作の流れ。

STEP.1 スクリプトを格納

  1. 下記のコードをテキストエディタに貼り付けて保存

Photoshopのほかの操作は、まとめからご覧いただけます。

CGM_IsolateLayerSelection.jsx

(function(){
    app.bringToFront();  
    var doc= activeDocument;
    var comp = "tmp";

    doc.suspendHistory("選択したレイヤーだけを表示・非表示する", "main()");

    function main() {
        try{
            if (doc.layerComps[0].selected = doc.layerComps.getByName(comp) ) {
                restoreSelectLayer();
                deleteSelectLayer();
            } 
        }catch(e){
            doc.layerComps.add(comp);
            showSelectLayer();
            }
    }  

    //レイヤーカンプの表示を削除
    function deleteSelectLayer(){
        var idDlt = charIDToTypeID( "Dlt " );
        var desc9 = new ActionDescriptor();
        var idnull = charIDToTypeID( "null" );
        var ref4 = new ActionReference();
        var idcompsClass = stringIDToTypeID( "compsClass" );
        var idOrdn = charIDToTypeID( "Ordn" );
        var idTrgt = charIDToTypeID( "Trgt" );
        ref4.putEnumerated( idcompsClass, idOrdn, idTrgt );
        desc9.putReference( idnull, ref4 );
        executeAction( idDlt, desc9, DialogModes.NO );
    }

    //選択しているレイヤーのみ表示
    function showSelectLayer(){
        var ids = getSelectedLayerIDs();
        if (ids.length == 0) ids.push(doc.activeLayer.id);
        setVisible(doc.layers, ids);
    }

    //選択しているレイヤーのIDを取得
    function getSelectedLayerIDs(){
        var ids = [];
        var ref = new ActionReference();
        ref.putProperty( charIDToTypeID( "Prpr" ), stringIDToTypeID( "targetLayersIDs" ) );
        ref.putEnumerated( charIDToTypeID( "Dcmn" ), charIDToTypeID( "Ordn" ), charIDToTypeID( "Trgt" ) );
        var desc = executeActionGet( ref );
        if (desc.hasKey( stringIDToTypeID( "targetLayersIDs" ) )) {
            var list = desc.getList( stringIDToTypeID( "targetLayersIDs" ) );
            for (var i = 0; i < list.count; i++) ids.push( list.getReference( i ).getIdentifier() );
        }
        return ids;
    }

    //選択しているレイヤーと、それを入れているグループを表示し、ほかを非表示にする
    function setVisible(layers, ids){
        for (var i = 0; i < layers.length; i++) {
            var layer = layers[i];
            if (isSelected(layer, ids)) {
                layer.visible = true;
            } else if (hasSelected(layer, ids)) {
                layer.visible = true;
                setVisible(layer.layers, ids);
            } else {
                layer.visible = false;
            }
        }
    }

    function hasSelected(layer, ids){
        if (layer.typename != "LayerSet") return false;
        for (var i = 0; i < layer.layers.length; i++) {
            if (isSelected(layer.layers[i], ids) || hasSelected(layer.layers[i], ids)) return true;
        }
        return false;
    }

    function isSelected(layer, ids){
        for (var i = 0; i < ids.length; i++) {
            if (layer.id == ids[i]) return true;
        }
        return false;
    }

     //もとの表示状態に戻す   
    function restoreSelectLayer(){    
        var idapplyComp = stringIDToTypeID( "applyComp" );
            var desc19 = new ActionDescriptor();
            var idnull = charIDToTypeID( "null" );
                var ref9 = new ActionReference();
                var idcompsClass = stringIDToTypeID( "compsClass" );
                ref9.putName( idcompsClass, "tmp" );
            desc19.putReference( idnull, ref9 );
        executeAction( idapplyComp, desc19, DialogModes.NO );
    }

})() ;

実行前に、既存のレイヤーカンプに「tmp」がないことを確認してください。同名のものがあると、復元用と判断して適用・削除するため、既存の「tmp」は先に別名へ変更します。そのうえで1回目の実行では今の表示状態を「tmp」に記録し、選んでいるレイヤーだけを表示します。

選んでいるレイヤーと、それを入れているグループを表示し、ほかのレイヤーとグループを非表示にします。 なお、掲載コードにはLayerComp.selectedへの代入がありますが、AdobeのJavaScriptリファレンスではこのプロパティは読み取り専用です。過去の実行結果は残していますが、この代入の扱いを他の版へ一般化できない点に注意してください。

選んだグループの中と、非表示にしたグループの中のレイヤーの目のアイコンは変えません。

2回目の実行では、レイヤーカンプ「tmp」を適用して表示を戻し、そのレイヤーカンプを削除します。ただし、コードのtry/catchは「tmp」がない場合と、復元・削除中のエラーを区別していません。復元中にエラーが起きても新たな「tmp」を作る処理へ進む可能性があるため、元の表示に戻らない場合は繰り返し実行せず、別名保存した元ファイルと比較してください。

2026年10月19日までのコードは、実行するたびに一番下のレイヤーの背景レイヤーの設定を外していたので、背景レイヤーのある文書では背景が通常のレイヤーに変わっていました。

2026年10月20日に直したコードでは、背景レイヤーは背景レイヤーのまま残ります。

  1. CGM_IsolateLayerSelection.jsx を 以下のフォルダに保存。
C:\Program Files\Adobe\Adobe Photoshop CC\Presets\Scripts\

上のパスは古い版の表記です。

Photoshop 2026(Windows)では、C:\Program Files\Adobe\Adobe Photoshop 2026\Presets\Scripts にこのフォルダーがあります。

2026年10月の確認では、このフォルダーへの配置と再起動は試していません。

  1. Photoshopを再起動。

STEP.2 スクリプトを実行

  1. [ファイル] → [スクリプト] → [CGM_IsolateLayerSelection] を選択。
  2. 選択したレイヤーだけが表示され、他のレイヤーは非表示になります。
  3. もう一度実行すると、元の状態に復元されます。

実行する前に、表示したいレイヤーをレイヤーパネルで選んでおきます。

Scriptsフォルダーに置かなくても、[ファイル]→[スクリプト]→[参照…]で保存したファイルを選べば実行できました。

実行しても確認の窓や完了の表示は出ず、レイヤーの表示だけが変わります。

文書を開いていないときに実行すると、次のエラーが出て止まりました。

エラーの窓。エラー1302 該当する要素はありません、ライン3、var doc= activeDocument と表示されている
2026-10-19撮影。Adobe Photoshop 2026 (27.11.0)、Windows 11 Pro (10.0.26200)。文書を開いていない状態で実行したときのエラー。

[OK]で閉じれば、Photoshopの状態は変わりません。

Photoshop 2026で実行した結果

2026年10月20日に、コードを直しました。

2つ以上選んでも上の1つだけが表示される、同じ文書で続けて使うと3回目・4回目が効かない、背景が「レイヤー 0」に変わって戻らない、の3つの不具合がありました。

この節の2026年10月19日の結果は、直す前のコードで確かめたものです。

直したコードの結果は、この節の最後の「直したコードで確かめた結果」にまとめています。

2026年10月19日に、Photoshop 2026(27.11.0)とWindows 11 Proで、直す前の記事のコードを書き換えずにCGM_IsolateLayerSelection.jsxとして保存し、[ファイル]→[スクリプト]→[参照…]から15回実行しました。

練習用のファイルと、レイヤーを選んだ状態は別のスクリプトで用意したので、その部分は確認に含めていません。

レイヤーの表示・選択・レイヤーカンプ・ヒストリーは、実行の前後にスクリプトで読み取って比べました。

1回目で選んだレイヤーだけになり、2回目で元に戻る

上の段は実行前、1回目の後、2回目の後のカンバス。1回目の後は赤い四角だけが残り、2回目の後は5つの四角と白い背景が戻っている。下の段は1回目の後と2回目の後のレイヤーパネル
2026-10-19撮影。Adobe Photoshop 2026 (27.11.0)、Windows 11 Pro (10.0.26200)。「赤」を選んで実行した前後。1回目で赤だけが表示され、2回目で元の表示に戻った。背景は「レイヤー 0」に変わったまま。1回目の後のパネルは全行が入らないので2回撮って点線でつないだ。

背景レイヤーのある文書で、「赤」だけを選んで実行しました。

1回目の実行で、表示されているのは「赤」だけになり、ほかのレイヤーとグループ「髪」は非表示になりました。

グループ「髪」の中の「前髪」「後ろ髪」は目のアイコンが付いたままで、グループごと隠れた状態です。

背景は「レイヤー 0」という通常のレイヤーに変わり、これも非表示になりました。

このとき、レイヤーカンプ「tmp」が1つでき、ヒストリーには「レイヤーを作成」と「選択したレイヤーだけを表示・非表示する」の2つが積まれました。

2回目の実行で、実行前に表示していたレイヤーがすべて表示に戻り、もともと非表示だった「影」は非表示のままでした。

レイヤーカンプ「tmp」は消え、ヒストリーには「選択したレイヤーだけを表示・非表示する」が1つ増えました。

背景だった「レイヤー 0」は、2回目の実行の後も通常のレイヤーのままで、背景レイヤーには戻りませんでした。

レイヤーカンプ「tmp」は表示・非表示だけを記録する設定でできていたので、戻るのは表示だけです。

1回目と2回目の間にレイヤーを動かすなど、表示以外の操作をした場合は確かめていません。

直す前のコードは、2つ以上選んでも上の1つだけが表示された

左は青と赤の2つを選んだ実行前、右は実行後。実行後は青い四角だけが表示され、レイヤーパネルでは青と赤が選ばれたまま赤の目のアイコンが消えている
2026-10-19撮影。Adobe Photoshop 2026 (27.11.0)、Windows 11 Pro (10.0.26200)。背景の無い文書で「青」と「赤」の2つを選んで実行した前後。表示されたのはパネルで上の「青」だけだった。

背景レイヤーの無い文書で、「青」と「赤」の2つを選んで実行しました。

表示されたのは、パネルで上にある「青」だけで、選んでいた「赤」も非表示になりました。

背景レイヤーのある文書で同じように2つ選んだときも、表示されたのは「青」だけで、実行後の選択も「青」だけになりました。

直したコードでは、選んだレイヤーがすべて表示されます。

グループの中のレイヤーを選ぶと、親のグループは表示のまま

黄色い四角だけが表示されたカンバスと、グループ髪と前髪だけに目のアイコンが付いたレイヤーパネル
2026-10-19撮影。Adobe Photoshop 2026 (27.11.0)、Windows 11 Pro (10.0.26200)。グループ「髪」の中の「前髪」を選んで実行した後。親のグループは表示のまま、「後ろ髪」とグループの外のレイヤーは非表示になった。

グループ「髪」の中の「前髪」を選んで実行しました。

「前髪」と、それを入れているグループ「髪」は表示のままで、同じグループの「後ろ髪」とグループの外のレイヤーは非表示になりました。

もう一度実行すると、元の表示に戻りました。

直す前のコードは、同じ文書で続けて使うと3回目は何も隠れなかった

同じ文書で「1回目→2回目」と元に戻した後、別のレイヤーを選んで3回目を実行すると、どのレイヤーも非表示になりませんでした。

このときもレイヤーカンプ「tmp」はでき、ヒストリーにも1つ積まれていました。

背景のある文書(2つ選んだ場合)と無い文書(1つ選んだ場合)の両方で、同じ結果になりました。

4回目の実行では、表示は変わらずにレイヤーカンプ「tmp」が消えました。

背景のある文書では、続けて5回目を実行すると、選んだレイヤーだけが表示されました。

直す前のコードは、表示の切り替えに、Altキーを押しながら目のアイコンをクリックする操作と同じ種類の命令を使っていました。

この操作は、もう一度行うと前の表示に戻す動きをするので、その状態が文書ごとに残っているためと考えられます。

保存せずに閉じて開き直した文書では、1回目から選んだレイヤーだけが表示されました。

直したコードはこの命令を使わず、レイヤーごとに表示・非表示を決めます。10月20日に確認した連続6回の結果は次の節のとおりです。例外発生時や途中で文書の構造を変えた場合まで、同じ結果を保証するものではありません。

もとからあるレイヤーカンプは残る

レイヤーカンプ「案A」を作ってある文書で、2回実行しました。

1回目で「tmp」が「案A」の後ろに追加され、2回目で「tmp」だけが消えて「案A」は残りました。

2回目で戻ったのは1回目の直前の表示で、「案A」の表示ではありませんでした。

「tmp」という名前のレイヤーカンプを自分で作っている文書では、このコードが同じ名前のものを使うので、名前を変えておいてください。

直したコードで確かめた結果

2026年10月20日に、直したコードを同じ練習ファイルで実行しました。

別のスクリプトから実行して確かめています([参照…]からは実行していません)。

同じ文書で「赤」→「赤」と「青」→「前髪」と選び直しながら6回続けて実行すると、奇数回目で選んだレイヤーだけが表示され、偶数回目で元の表示に戻りました。

「赤」と「青」を選んだときは2つとも表示され、実行後も2つとも選ばれたままでした。

背景は6回とも背景レイヤーのままで、背景だけを選んだときは背景だけが表示されました。

ヒストリーには、1回の実行につき「選択したレイヤーだけを表示・非表示する」が1つだけ積まれ、「レイヤーを作成」は積まれませんでした。

グループ「髪」を選んだときは、グループと中の「前髪」「後ろ髪」が表示のまま、ほかが非表示になりました。

もともと非表示の「影」を選んだときは「影」が表示され、2回目で非表示に戻りました。

レイヤーカンプ「案A」がある文書では、2回目で「tmp」だけが消えて「案A」は残りました。

文書を開いていないときは、直す前と同じエラーが出ました。

確かめていないこと

Scriptsフォルダーへの配置と再起動、メニューに出るスクリプト名、Shiftキー・Ctrlキーのクリックで選んだ状態からの実行、1回目と2回目の間に表示以外の操作をした場合、1回目の後に保存して閉じた場合、一番下がグループの文書、アートボードのある文書、Mac版と他の版は確かめていません。

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

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

スポンサーリンク

まとめ

  • 選択したレイヤーのみをすばやく表示・非表示にできる
  • 目のアイコンを1つずつクリックする手間を省き、作業を効率化できる
  • 再実行することで元の表示状態に戻せる

Photoshopのレイヤー管理をスムーズにするために、このスクリプトを活用して効率化してみてください。

よくある質問:選択したレイヤーのみを表示・非表示にする

このスクリプトでは何ができますか?

Photoshopで、選択したレイヤーのみを表示・非表示にできます。レイヤーパネルの目のアイコンを1つずつ切り替える手間を省き、元の表示状態にも素早く復帰できます。

どんなメリットがありますか?

選択したレイヤーだけをすばやく表示・非表示に切り替えられます。次の実行で記録した表示・非表示へ戻せます。ただし、途中でレイヤーを追加・削除した場合などの復元は確認していません。手作業で目のアイコンを切り替えるより、作業時間を短縮できます。

実行すると、表示状態はどうなりますか?

選択したレイヤーだけが表示され、他のレイヤーは非表示になります。

2026年10月19日までのコードでは、2つ以上選んでも、表示されたのはパネルで一番上の1つだけでした。

2026年10月20日に直したコードでは、選んだレイヤーがすべて表示されます。

グループの中のレイヤーを選んだときは、親のグループも表示のまま残ります。

元の表示状態に戻すにはどうしますか?

もう一度スクリプトを実行すると、元の状態に復元されます。大切なファイルは、念のため事前に別名で保存してから試してください。

戻るのは表示・非表示だけです。

2026年10月19日までのコードでは、背景レイヤーが「レイヤー 0」という通常のレイヤーに変わったままになり、同じ文書で続けて使うと3回目の実行では何も隠れませんでした。

2026年10月20日に直したコードでは、連続6回の試験で背景レイヤーを保ったまま表示を切り替え、元の表示へ戻せました。途中でのレイヤー追加・削除や復元時のエラーは試していません。

スクリプトはどのように導入しますか?

記事のコードをテキストエディタに貼り付けてCGM_IsolateLayerSelection.jsxとして保存し、記事で案内しているフォルダに保存します。保存後にPhotoshopを再起動してください。

Photoshop 2026(Windows)のフォルダーは C:\Program Files\Adobe\Adobe Photoshop 2026\Presets\Scripts です。

フォルダーへの配置は未確認です。10月19日の旧コードは[ファイル]→[スクリプト]→[参照…]で実行しました。10月20日の修正版は別のスクリプトから実行しており、修正版を[参照…]で実行する操作は未確認です。

どうやって実行しますか?

表示したいレイヤーを選択し、[ファイル] → [スクリプト] → [CGM_IsolateLayerSelection] を選択します。

2026年10月19日には、[ファイル]→[スクリプト]→[参照…]から選んで実行できることを確かめました。

表示したいレイヤーは、2つ以上選んでもかまいません。

スクリプトのコードはどこで確認できますか?

記事内に掲載しているほか、GitHubのMOTOKI-LLC/cg-method-codeにもまとめています。

複数のレイヤーを選んで実行するとどうなりますか?

2026年10月20日に直したコードでは、選んだレイヤーがすべて表示されます。

2026年10月19日までのコードでは、選んだうちパネルで一番上のレイヤー1つだけが表示され、「青」と「赤」を選んだときは「青」だけが表示されました。

背景レイヤーはどうなりますか?

2026年10月20日に直したコードでは、背景レイヤーは背景レイヤーのまま、表示・非表示だけが切り替わります。

2026年10月19日までのコードでは、背景が「レイヤー 0」という通常のレイヤーに変わり、元の表示に戻した後もそのままでした。

メニューの表示や名称が記事と違う場合はどうすればよいですか?

Photoshopのバージョンによってメニューの名称や配置が変わることがあります。最新の操作手順は、Adobeの公式情報で確認してください。

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

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

Photoshopのおすすめ書籍

動作要件とPCの確認項目

周辺機器の優先度

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