Photoshopのスクリプトで「すべてのグループを折りたたむ」をショートカット化する

Photoshopのスクリプトで「すべてのグループを折りたたむ」をショートカット化する

Photoshopのスクリプトに手を出して手始めにやりたかったやつ! 入れ子になって展開しまくってるグループも、展開してるレイヤー効果などもぜーんぶ閉じてくれるのを、キーボードのショートカットでやりたかったのです。


スクリプト使わなくてもかんたんにできた(2024/1/11追記)

ふつうにキーボードショートカット登録できるようになったので、この記事は必要がなくなりました。以下はスクリプトやってみたいな~とか興味のある方だけどうぞ。

そういう機能もあるけれど…

Ctrl+Alt押しながら図の赤丸部分をクリックすれば全部たたんでくれるんですよね。知ってる。知ってるけども…! 選んで、狙って、クリックするのって、めんどくさくないですか…? そんなことをめんどくさがるのは私だけなのか…? ショートカットなら一瞬でできるのに、どうにかならんのかとずっと思ってて、どうにかしました。

準備

.jsxファイルの作成とショートカット割り当て、実行までの方法はこちらの記事をご参照ください。

コード

図の操作を、自動記録(前記事参照)によってコード化したものがこちら。

自動記録で生成されたコード

// =======================================================
var idcollapseAllGroupsEvent = stringIDToTypeID( "collapseAllGroupsEvent" );
    var desc0 = new ActionDescriptor();
executeAction( idcollapseAllGroupsEvent, desc0, DialogModes.NO );

「collapseAllGroupsEvent」っていうイベントがあるんですね~。「close」とかそういうのなのかなと思ってたのですが、ドキュメントを閉じるなどの命令に使われてるみたいで、グループを閉じるのは「collapse(つぶれる、くずれる)」という表現で行われるみたいです。

最終的に使ってるコード

executeAction( stringIDToTypeID( "collapseAllGroupsEvent" ) );

後ろふたつの引数は省略しても動きましたので、ワンライナーにして使ってます。たった一行のコードですけれど、これで開きに開いたレイヤーをショートカットでズバッとたためるように!! なりました!!!

余談

ちなみに、レイヤーグループのことはコード上では「LayerSet」と表現されるらしく、「選択レイヤーがグループだったらそのグループを閉じる」というのを以下のようにできないかなぁと試行錯誤したのですが、

var ly = activeDocument.activeLayer; //アクティブレイヤーを取得
if ( ly.typename == "LayerSet" ){ //レイヤーセットだったら
	//対象のレイヤーセットを閉じる
}

「すべてのレイヤーセットを閉じる」はできても、「1つのレイヤーセットを閉じる」というメソッドは、、見つからない…、、海外の掲示板も見てみたんですが同じようなことを言ってる方もいらっしゃいました…。

私の調べ方が甘いのかもしれないです! もしご存知の方いらっしゃいましたら教えてください!

公開日:2019/05/13

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

コメントは承認制ですので、反映までしばらくお待ち下さい。(稀にスパムの誤判定にて届かないこともあるようですので、必要な際はお問い合わせからお願い致します。)

YouTubeでQ&Aコンテンツを企画しています

運営しているYouTubeチャンネルで、ご相談やご質問を募集しています。動画のコメントやお問い合わせページからお気軽にご相談をお寄せください。