PhotoshopでグループのマスクだけをON/OFFするスクリプトを紹介します。
個別のレイヤーマスクを残したまま、グループマスクだけを一括管理できます。
ただし、掲載のコードはグループのマスクを無効にするだけで、ベクトルマスクは対象になりません。
Photoshop 2026で実際に動かした結果は、後半の「Photoshop 2026で実行した結果」にまとめています。
グループのマスクをON/OFFするメリット
- すべてのグループマスクを一括でON/OFFできる
- 個々の通常レイヤーのマスクと、グループのベクトルマスクは変更しない
- 手作業でのON/OFF切り替えの手間を削減できる
スクリプトの導入方法
STEP.1 スクリプトをダウンロード・格納
- 下記のコードをメモ帳などに貼り付けて保存
Photoshopのほかの操作は、まとめからご覧いただけます。

CGM_ToggleGroupMasks.jsx
disableGroupMasks(app.activeDocument);
function disableGroupMasks(parent) {
for (var i = 0; i < parent.layerSets.length; i++) {
try {
closeClippingMask(parent.layerSets[i].id);
} catch (e) {}
disableGroupMasks(parent.layerSets[i]);
}
}
function closeClippingMask(layerId) {
var idsetd = charIDToTypeID("setd");
var desc19 = new ActionDescriptor();
var idnull = charIDToTypeID("null");
var ref1 = new ActionReference();
var idLyr = charIDToTypeID("Lyr ");
var idOrdn = charIDToTypeID("Ordn");
var idTrgt = charIDToTypeID("Trgt");
ref1.putIdentifier(idLyr, layerId);
desc19.putReference(idnull, ref1);
var idT = charIDToTypeID("T ");
var desc20 = new ActionDescriptor();
var idUsrM = charIDToTypeID("UsrM");
desc20.putBoolean(idUsrM, false);
var idLyr = charIDToTypeID("Lyr ");
desc19.putObject(idT, idLyr, desc20);
executeAction(idsetd, desc19, DialogModes.NO);
}次の設定をtrueにすると、グループのレイヤーマスクを一律でONにします。元々のON/OFFを記録して戻す処理ではないため、意図して無効にしていたマスクもONになります。混在状態を残したい場合は、実行前にPSDを複製してください。
desc20.putBoolean(idUsrM, false);
上のコードでは、この行は25行目のdesc20.putBoolean(idUsrM, false);です。
行番号は保存時の改行によって変わるため、desc20.putBoolean(idUsrM, false);を探し、この行の値だけを変更してください。
CGM_ToggleGroupMasks.jsxを以下のフォルダに保存します。
C:\Program Files\Adobe\Adobe Photoshop CC\Presets\Scripts\Photoshop 2026(Windows)では、同じ役割のフォルダーはC:\Program Files\Adobe\Adobe Photoshop 2026\Presets\Scripts\にあります。
Program Filesの中なので、ファイルを置くには管理者の権限が要ります。
フォルダーに置かずに試すときは、STEP.2の代わりに[ファイル]→[スクリプト]→[参照…]でこのファイルを選び、[読み込み]を押しても実行できます。
- Photoshopを再起動します。
STEP.2 スクリプトを実行
- [ファイル] → [スクリプト] → [CGM_ToggleGroupMasks]を選択します。
- グループのマスクだけが一括で無効(OFF)になることを確認します。
Photoshop 2026で実行した結果
2026-10-19に、Photoshop 2026(27.11.0)とWindows 11 Pro(10.0.26200)で確かめました。
2026年10月20日に、コードを直しました。
「下のレイヤーを選択」をくり返して進んでいたため、閉じているグループの中のグループが飛ばされる不具合がありました。
この節の2026-10-19の結果は、直す前のコードで確かめたものです。
直す前の記事のコードを書き換えずに保存し、[ファイル]→[スクリプト]→[参照…]から実行しています。
スクリプトフォルダーに置いてメニューから選ぶ方法(STEP.1・2)は試していません。
練習用に、900×480 pxのファイルへ、次の表のレイヤーとグループをスクリプトで用意しました。
グループのマスクは、それぞれの列の上半分だけを表示するように作っています。
| レイヤー | 実行前 | 直す前のコード(1回目の実行後) | 直したコード(2026-10-20) |
|---|---|---|---|
| A 紫(グループの外のレイヤーマスク) | 有効 | 有効のまま | 有効のまま |
| G1 開いたグループのマスク | 有効 | 無効 | 無効 |
| G1の中の 赤 のレイヤーマスク | 有効 | 有効のまま | 有効のまま |
| G1の中のグループ G1-1 のマスク | 有効 | 無効 | 無効 |
| G2 閉じたグループのマスク | 有効 | 無効 | 無効 |
| G2の中のグループ G2-1 のマスク | 有効 | 有効のまま | 無効 |
| G3 マスクの無いグループ | なし | なし(エラーの表示も出ない) | なし(エラーの表示も出ない) |
| G4 ベクトルマスクだけのグループ | 有効 | 有効のまま | 有効のまま |

グループのマスクだけが無効になる
1回目の実行で、グループ「G1」「G1-1」「G2」のマスクが無効になり、レイヤーパネルのマスクのサムネールに赤い×が付きました。
グループの外の「A」と、グループの中の「赤」のレイヤーマスクは、有効のまま残りました。
カンバスでは、G1のマスクで隠れていた橙の四角が全部見えるようになり、紫と赤は左半分だけのままです。
マスクの無いグループ「G3」では、エラーの表示は出ずに、そのまま次のレイヤーへ進みました。
グループのベクトルマスク(G4)は対象外で、有効のまま残りました。
ヒストリーには、無効にしたグループの数だけ「レイヤーマスクを使用しない」が残ります(今回は3つ)。
直す前のコードでは、実行後に一番上のレイヤー「A」が選ばれた状態になりました(実行前は「背景」を選んでいました)。
直す前のコードは、閉じたグループの中のグループが対象にならなかった
閉じたグループ「G2」の中にあるグループ「G2-1」のマスクは、有効のまま残りました。
開いているグループ「G1」の中のグループ「G1-1」は無効になったので、閉じているグループの中だけが飛ばされていました。
カンバスの緑の四角が左半分しか見えないのは、G2-1のマスクが残っているためです。
レイヤーパネルでG2の三角を押して開き、もう一度実行すると、G2-1のマスクも無効になりました。
2回目にヒストリーに増えたのは「レイヤーマスクを使用しない」の1つだけで、すでに無効のマスクには何も起きていません。

直す前のコードは「下のレイヤーを選択」をくり返して進んでいたので、閉じているグループの中には入りませんでした。
直したコードは、ドキュメントの中のグループを、グループの中のグループまで順にたどり、レイヤーを選び直さずにマスクを無効にします。
2026年10月20日に、直したコードを同じ練習ファイル(G2は閉じたまま)で実行しました。
別のスクリプトから実行して確かめています([参照…]からは実行していません)。
G1・G1-1・G2・G2-1の4つのマスクが無効になり、AとG1の中の赤のレイヤーマスク、G4のベクトルマスクは有効のまま残りました。
ヒストリーには「レイヤーマスクを使用しない」が4つ残り、選ばれているレイヤーは実行前の「背景」のままでした。
続けてもう一度実行しても、ヒストリーは増えませんでした。
G1を非表示にしたファイルでも同じ4つのマスクが無効になり、G1は非表示のまま残りました。
無効にするだけで、ON/OFFを入れ替えるわけではない
このコードは、グループのマスクを無効にする(falseを入れる)だけです。
もう一度実行しても、無効になったマスクが有効に戻ることはありませんでした。
有効に戻すときは、25行目のfalseをtrueにした別のファイルを用意します。
直す前のコードで、この1か所だけを書き換えたファイルを同じ手順で実行すると、G1・G1-1・G2・G2-1の4つのマスクがすべて有効に戻り、ヒストリーには「レイヤーマスクを使用」が4つ残りました。
このときはG2を開いたままにしていました。
直したコードの25行目を同じように書き換えたファイルでは、G2を閉じたままでも、G2-1を含む4つのマスクがすべて有効に戻りました(2026年10月20日、別のスクリプトから実行)。
関数の名前はcloseClippingMaskですが、無効にしているのはクリッピングマスクではなく、グループのレイヤーマスクです。
確かめていないこと
スクリプトフォルダーに置いてメニューから実行する方法は、管理者の権限が要るため試していません。
ロックしたグループ、アートボードがあるファイルでの動きは確かめていません。
Macや、Photoshop 2026以外の版でも試していません。
この記事で紹介しているコードは、GitHubのMOTOKI-LLC/cg-method-codeにもまとめています。
レイヤーを操作するスクリプトは、ほかにもあります。




まとめ
- グループのマスクのみを一括でON/OFFできる
- 個々の通常レイヤーのマスクと、グループのベクトルマスクは変更しない
- データ整理や作業効率の向上に役立つ
スクリプトを活用して、グループマスクの管理を効率化してみてください。
よくある質問:グループのマスクだけを一括でON/OFFする
このスクリプトでは何ができますか?
Photoshopで、グループのマスクだけを一括で無効(OFF)にできます。
コードの1か所をtrueに書き換えたファイルを使えば、一括で有効(ON)に戻せます。
個別のレイヤーマスクを残したまま、グループマスクだけをまとめて管理できます。
レイヤーマスクにも影響しますか?
変更するのはグループに付いたレイヤーマスクです。個々の通常レイヤーのマスクと、グループのベクトルマスクは対象外です。
どんなメリットがありますか?
すべてのグループマスクを一括でON/OFFできます。手作業で1つずつ切り替える手間を減らせるので、データ整理や作業効率の向上に役立ちます。
ONとOFFはどうやって切り替えますか?
記事のコード内に、trueに設定するとグループのマスクが一括でONになる設定があります。ONにしたいかOFFにしたいかに合わせて、この設定を確認してから実行してください。
スクリプトはどのように導入しますか?
記事のコードをメモ帳などに貼り付けてCGM_ToggleGroupMasks.jsxとして保存し、記事で案内しているフォルダに配置します。配置後にPhotoshopを再起動してください。
どうやって実行しますか?
[ファイル] → [スクリプト] → [CGM_ToggleGroupMasks] を選択します。
実行後、グループのマスクだけが一括で無効(OFF)になっていることを確認してください。
スクリプトのコードはどこで確認できますか?
記事内に掲載しているほか、GitHubのMOTOKI-LLC/cg-method-codeにもまとめています。
メニューの表示や名称が記事と違う場合はどうすればよいですか?
Photoshopのバージョンによってメニューの名称や配置が変わることがあります。最新の操作手順は、Adobeの公式情報で確認してください。
閉じたグループの中にあるグループのマスクが無効になりません
2026年10月19日までのコードでは、閉じているグループの中のレイヤーやグループが飛ばされていました。
2026年10月20日にコードを直し、閉じているグループの中のグループのマスクも無効になるようにしました。
もう一度実行してもマスクが有効に戻りません
掲載のコードはマスクを無効にするだけで、有効と無効を入れ替える作りではないためです。
有効に戻すときは、25行目のfalseをtrueにしたファイルを別に用意して実行してください。
