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

Photoshop JSXで1つ下へ相対選択する|Bckw・非表示・エラーの確認

現在の選択を基準に、Action Managerへ下方向の相対選択を要求するPhotoshop JSXです。Bckwを指定します。選択IDの一覧を先に取得し、1つだけ選ばれている場合に実行します。画面で隣に見える行と、Photoshopが相対選択で返す対象を同一と決めつけないでください。

2026年10月19日に、Photoshop 2026(27.11.0)とWindows 11 Proで、下の全体コードを書き換えずに保存し、[ファイル]→[スクリプト]→[参照…]から実行して確かめました。

非表示のレイヤーと閉じたグループの中は飛ばされ、開いたグループには中へ入り、背景の次は一番上のレイヤーに戻りました。

コードはレイヤーの移動・名前変更・保存を呼びませんが、選択状態は変わります。

アートボード、グループの中の非表示、Mac版は確かめていないので、自作の文書で試してから使ってください。

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

目次

相対選択・非表示を含む隣接選択・追加選択の違い

目的方法と範囲
Photoshopに下方向の相対選択を要求この記事のBckw。グループや非表示の扱いは実機で比較する。
同じ親の下で、非表示を含む1つ下を明示DOMのparent.layersで隣を探し、ID指定で置き換える。非表示を含む隣接選択
元の選択へ1つ上を追加選択を先に解除せず、IDとaddToSelectionで1回要求する。上への追加選択
文書直下の端を選ぶ最上位/最下位。相対選択とは別の対象指定。

旧記事の「表示レイヤー」という説明を、全階層・すべての文書で非表示を必ず飛ばす保証にはしません。このコード自身はvisibleを走査して候補を絞っていません。MkVs=falseは選択要求に付ける設定で、表示レイヤーだけを抽出する条件でも、ロックを解除する指示でもありません。

Photoshop 2026(27.11.0)で一番上の階層から実行したところ、すぐ下の非表示のレイヤーは飛ばされ、その下の表示されたレイヤーが選ばれました。

飛ばされたレイヤーは非表示のまま、選ばれたロック付きのレイヤーも鍵が付いたままでした。

スポンサーリンク

下方向の相対選択を要求する全体コード

新しい全体コードをUTF-8の.jsxとして保存し、ファイル→スクリプト→参照から実行します。旧コードへ追記せず、別ファイルとして1回実行してください。メニューへの登録は動作を確認した後に行います。

#target photoshop
(function () {
    if (app.documents.length === 0) { alert("文書を開いてください。"); return; }
    function validId(value) {
        return typeof value === "number" && isFinite(value) && value >= 0 && Math.floor(value) === value;
    }
    function selectedIds() {
        var key = stringIDToTypeID("targetLayersIDs");
        var ref = new ActionReference();
        ref.putProperty(charIDToTypeID("Prpr"), key);
        ref.putEnumerated(charIDToTypeID("Dcmn"), charIDToTypeID("Ordn"), charIDToTypeID("Trgt"));
        var result = executeActionGet(ref);
        if (!result.hasKey(key)) { throw new Error("選択IDの一覧を取得できません。"); }
        var list = result.getList(key);
        var ids = [];
        for (var i = 0; i < list.count; i++) {
            var id = list.getReference(i).getIdentifier();
            if (!validId(id)) { throw new Error("選択IDが数値の整数ではありません。"); }
            ids.push(id);
        }
        return ids;
    }
    function contains(ids, id) {
        for (var i = 0; i < ids.length; i++) { if (ids[i] === id) { return true; } }
        return false;
    }
    try {
        var ids = selectedIds();
        if (ids.length !== 1) { alert("レイヤーを1つだけ選択してから実行してください。"); return; }
        var ref = new ActionReference();
        ref.putEnumerated(charIDToTypeID("Lyr "), charIDToTypeID("Ordn"), charIDToTypeID("Bckw"));
        var desc = new ActionDescriptor();
        desc.putReference(charIDToTypeID("null"), ref);
        desc.putBoolean(charIDToTypeID("MkVs"), false);
        executeAction(charIDToTypeID("slct"), desc, DialogModes.NO);
    } catch (error) {
        alert("読取または選択で中断: " + error.message + "\n行: " + error.line);
    }
}());

文書・複数選択・選択IDの事前検査

文書なしなら文書の取得やAction Managerの読取を行いません。targetLayersIDsの一覧が取得できない版・状態では中断します。取得失敗を「1つだけ選択」と推測して続行せず、一覧0件・複数件も停止します。複数選択を受け付ける追加操作は、別記事の追加選択を使ってください。

端のレイヤーとエラーを区別する

この例は下端に到達したことを実行前に判定していません。executeActionが失敗した場合はerror.messageと行番号を表示します。例外は端への到達だけでなく、文書の状態やAPIの読取・選択失敗でも起こり得るため、「これ以上下のレイヤーはない」と一律に言い換えません。失敗時の選択状態も実機で確認してください。

Photoshop 2026(27.11.0)では、一番下の背景レイヤーを選んで実行してもエラーにならず、一番上のレイヤーが選ばれました。

この版では、例外を下端の合図にはできませんでした。

繰り返し実行する処理に組み込むときは、下端で止める判定を別に用意してください。

自作PSDで確認する条件

条件確認するもの
3つの表示レイヤーで中央だけ選択要求の方向と、選択後の行・選択ID。
隣が非表示・ロック・グループ相対選択が対象にした行。MkVs=falseでも表示状態の前後を比較。
グループの子・折り畳んだグループ・アートボード親の境界と画面の見た目が異なる場合の選択結果。
下端にいる実行結果または例外の全文。別のエラーと区別。
文書なし・選択0件・複数選択選択実行前の停止。自動で1件へ絞らない。

上表のうち、アートボードと選択0件以外の条件はPhotoshop 2026(27.11.0)で確かめました。

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

自分の文書で使うときも、前後の行・ID・表示・レイヤー数と順序を記録し、保存・削除などの処理をつなぐ前に対象を確認してください。

Photoshop 2026で実行した結果

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

練習用の文書は、上から「A 表示」「B 非表示」「C ロック」(すべてをロック)「G 開いたグループ」(中にG1・G2)「H 閉じたグループ」(中にH1・H2)「背景」の順に、別のスクリプトで作りました。

最初に「A 表示」を選んだ状態と、2枚を選んだ状態もスクリプトで用意したので、その部分は確認に含めていません。

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

非表示は飛ばし、開いたグループには入る

レイヤーパネルを4つ並べた画像。実行前はA 表示、1回目はB 非表示を飛ばしてC ロック、2回目はG 開いたグループ、3回目はグループの中のG1が選ばれている
2026-10-19撮影。Adobe Photoshop 2026 (27.11.0)、Windows 11 Pro (10.0.26200)。一番上のA 表示から3回続けて実行したときのレイヤーパネル。非表示のBは飛ばされ、開いたグループは中へ入った。

「A 表示」を選んで実行すると、すぐ下の「B 非表示」ではなく、その下の「C ロック」が選ばれました。

「B 非表示」の目のアイコンは消えたままで、「C ロック」の鍵のアイコンも付いたままでした。

もう一度実行すると「G 開いたグループ」そのものが選ばれ、3回目でグループの中の「G1」に入りました。

閉じたグループの中は飛ばし、背景の次は一番上に戻る

レイヤーパネルを4つ並べた画像。4回目はG2、5回目はH 閉じたグループ、6回目は背景、7回目は一番上のA 表示が選ばれている
2026-10-19撮影。Adobe Photoshop 2026 (27.11.0)、Windows 11 Pro (10.0.26200)。続けて4回実行したときのレイヤーパネル。閉じたグループの中のH1・H2は飛ばされ、背景の次は一番上のA 表示に戻った。

続けて実行すると「G2」、その次はグループの外の「H 閉じたグループ」が選ばれました。

「H 閉じたグループ」から実行すると、中の「H1」「H2」には入らず、「背景」が選ばれました。

「H 閉じたグループ」は閉じたままで、パネルの表示も変わりませんでした。

「背景」からもう一度実行するとエラーにならず、一番上の「A 表示」が選ばれました。

選択の置き換えはヒストリーに積まれず、9回の実行の後もヒストリーは「開く」のままでした。

2枚以上の選択や文書なしでは選ばずに止まる

A 表示とG1の2枚を選んだレイヤーパネルと、「レイヤーを1つだけ選択してから実行してください。」のスクリプト警告
2026-10-19撮影。Adobe Photoshop 2026 (27.11.0)、Windows 11 Pro (10.0.26200)。2枚を選んで実行したときのレイヤーパネルと警告。[OK]の後も選択は変わらなかった。

「A 表示」と「G1」の2枚を選んだ状態で実行すると、「レイヤーを1つだけ選択してから実行してください。」と出ました。

[OK]で閉じた後も、2枚とも選ばれたままでした。

文書を開いていないホーム画面で実行すると、「文書を開いてください。」と出ました。

確かめていないこと

アートボード、レイヤーを1つも選んでいない状態、グループの中の非表示のレイヤー、背景レイヤーが無い文書の一番下、エラーで中断する場合の表示は確かめていません。

MkVsを付けない場合との違い、Scriptsフォルダーへの登録、ショートカットの割り当て、Mac版と他の版も試していません。

旧コードと過去の画面(参照用)

旧例には文書数・選択件数の検査がなく、すべての例外を端に到達したものとして表示します。新しい例は事前条件と例外の原文を分けています。旧画像のundefinedは戻り値の表示で、選択成功の証拠ではありません。

// 一つ下の表示レイヤーを選択
function selectLayerBelow() {
    try {
        var desc = new ActionDescriptor();
        var ref = new ActionReference();
        ref.putEnumerated(
            charIDToTypeID("Lyr "), 
            charIDToTypeID("Ordn"), 
            charIDToTypeID("Bckw") // 1つ下のレイヤーへ移動
        );
        desc.putReference(charIDToTypeID("null"), ref);
        desc.putBoolean(charIDToTypeID("MkVs"), false); // 可視状態を変更しない
        executeAction(charIDToTypeID("slct"), desc, DialogModes.NO);
    } catch (e) {
        alert("これ以上下のレイヤーはありません。");
    }
}

// スクリプトを実行
selectLayerBelow();
旧記事のぼかされたコード編集画面。下部のExecution finishedと結果undefinedだけでは、Photoshopの選択行・表示状態は確認できず、レイヤーパネルは写っていません。
旧記事のぼかされたコード編集画面。下部のExecution finishedと結果undefinedだけでは、Photoshopの選択行・表示状態は確認できず、レイヤーパネルは写っていません。 過去の掲載画像で、撮影日・Photoshopの詳細版は未確認です。

参照資料と確認範囲

Adobe Photoshop Scripting Guide 2020の38〜39ページ(レイヤーの並び順・グループ)、JavaScript Scripting Reference 2020のActionDescriptor、ActionList、ActionReference、Document、Layers、LayerSetを参照しています。2020年版のExtendScript資料で、今回のPhotoshop実機の検証記録ではありません。

Cutterman作者のレイヤー操作コードのtargetLayersIDsとID指定、Adobe CommunityのJJMack氏による選択追加の記録のselectionModifierを比較しました。作者の掲載例は公式の全条件保証ではなく、今回の実機成功や速度測定にも数えていません。Adobeのレイヤー選択手順で説明する行の選択と、サムネールからのピクセル選択は別です。

旧配布と関連する手順

旧配布はGitHubの元コードに残しています。公開フォルダーの01.jsは今回の新しい例へ更新していません。実行する場合は、このページの新しい全体コードを別の.jsxとして保存してください。

スポンサーリンク

よくある質問:下方向の相対選択を要求するスクリプト

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

現在の選択を基準に、Action Managerへ下方向の相対選択を要求するPhotoshop JSXです。選択IDの一覧を先に取得し、1つだけ選ばれている場合に実行します。

画面で隣に見える行が必ず選ばれますか?

いいえ。

2026年10月19日にPhotoshop 2026(27.11.0)で確かめたところ、すぐ下が非表示のレイヤーなら飛ばされ、閉じたグループの中も飛ばされました。

開いたグループは、まずグループそのものが選ばれ、次に中の一番上のレイヤーが選ばれました。

「1つ下を選ぶ」ほかの方法とどう違いますか?

Photoshopに下方向の相対選択を要求する方法(この記事)、同じ親の下で非表示を含む1つ下を明示する方法(DOMのparent.layersで隣を探してID指定)、元の選択へ1つ上を追加する方法(addToSelection)、文書直下の端を選ぶ最上位/最下位の指定を区別しています。相対選択とは別の対象指定です。

非表示のレイヤーは飛ばされますか?

2026年10月19日にPhotoshop 2026(27.11.0)で、一番上の階層のレイヤーから実行したときは、すぐ下の非表示のレイヤーが飛ばされました。

このコード自身は表示状態を調べて候補を絞っていないので、飛ばしたのはPhotoshopの相対選択の動きです。

グループの中の非表示のレイヤーや、ほかの版では確かめていないので、全部の文書で飛ばす保証にはしません。

MkVs=falseは選択要求に付ける設定で、ロックを解除する指示でもありません。

実行前にどんな検査をしますか?

文書なしなら文書の取得やAction Managerの読取を行いません。選択IDの一覧を先に取得し、複数選択などの場合は実行しません。端のレイヤーとエラーも区別し、事前条件と例外の原文を分けて表示します。旧例は文書数・選択件数の検査がなく、すべての例外を端に到達したものとして表示していました。

実行後の「undefined」は成功を意味しますか?

いいえ。旧画像のundefinedは戻り値の表示で、選択成功の証拠ではないとしています。実際に選択が変わったかは、レイヤーパネルで確認してください。

このコードはPhotoshopで動作確認されていますか?

はい。

2026年10月19日に、Photoshop 2026(27.11.0)とWindows 11 Proで、[ファイル]→[スクリプト]→[参照…]から実行して確かめました。

確かめたのは、非表示の隣、ロックしたレイヤー、開いたグループ、閉じたグループ、背景からの実行、2枚の選択、文書なしの7通りです。

コードはレイヤーの移動・名前変更・保存を呼びませんが、選択状態は変わります。

アートボード、グループの中の非表示、Mac版の挙動は確かめていないので、自作の文書で確認してください。

どうやって使いますか?GitHubの旧配布は使えますか?

新しい全体コードをUTF-8の.jsxとして保存し、[ファイル]→[スクリプト]→[参照]から実行します。旧コードへ追記せず、別ファイルとして1回実行してください。メニューへの登録は動作を確認した後に行います。GitHubの旧配布は元コードのまま残っており、公開フォルダーの01.jsは新しい例に更新していません。最新の仕様は、Adobeの公式情報で確認してください。

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

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

Photoshopのおすすめ書籍

動作要件とPCの確認項目

周辺機器の優先度

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