Photoshopでレイヤーとマスクのリンクを一括で繋ぐスクリプトを紹介します。
作業中に外れてしまったリンクをまとめて再接続できるスクリプトです。
2026年10月19日に、Photoshop 2026(27.11.0)とWindows 11で記事のコードを実行し、結果を「Photoshop 2026で実行した結果」に足しました。
レイヤーとマスクのリンクを一括で繋ぐメリット
- 全レイヤーのマスクリンクを一括で再接続できる
- 手作業で1つずつリンクし直す手間を削減できる
- 意図しないマスクズレを防ぎデータ管理を効率化できる
スクリプトの導入方法
STEP.1 スクリプトをダウンロード・格納
- 文書内のリンクを一括で変更するため、先にPSDを複製し、意図してリンクを外した箇所を控えてください。再接続は移動済みの画像とマスクを元の位置へ戻す処理ではありません。下記のコードをテキストエディタ等に貼り付けて保存します。
Photoshopのほかの操作は、まとめからご覧いただけます。

CGM_ConnectMaskLinks.jsx
main();
function main() {
if (!documents.length) return;
linkLayers();
}
function linkLayers() {
var ref = new ActionReference();
ref.putEnumerated(charIDToTypeID('Dcmn'), charIDToTypeID('Ordn'), charIDToTypeID('Trgt'));
var count = executeActionGet(ref).getInteger(charIDToTypeID('NmbL')) + 1;
var Names = [];
try {
activeDocument.backgroundLayer;
var i = 0;
} catch (e) {
var i = 1;
};
for (i; i < count; i++) {
if (i == 0) continue;
ref = new ActionReference();
ref.putIndex(charIDToTypeID('Lyr '), i);
var desc = executeActionGet(ref);
var layerSection = desc.getEnumerationValue(stringIDToTypeID('layerSection'));
var Id = desc.getInteger(stringIDToTypeID('layerID'));
if (typeIDToStringID(layerSection) == 'layerSectionEnd') continue;
if (desc.hasKey(charIDToTypeID("UsrM"))) linkChannelMask(i);
if (desc.getBoolean(stringIDToTypeID("hasVectorMask"))) linkVectorMask(i);
}
};
function linkChannelMask(idx) {
var desc = new ActionDescriptor();
var ref = new ActionReference();
ref.putIndex(charIDToTypeID("Lyr "), idx);
desc.putReference(charIDToTypeID('null'), ref);
var desc2 = new ActionDescriptor();
desc2.putBoolean(charIDToTypeID('Usrs'), true);
desc.putObject(charIDToTypeID('T '), charIDToTypeID('Lyr '), desc2);
executeAction(charIDToTypeID('setd'), desc, DialogModes.NO);
};
function linkVectorMask(idx) {
var desc = new ActionDescriptor();
var ref = new ActionReference();
ref.putIndex(charIDToTypeID("Lyr "), idx);
desc.putReference(charIDToTypeID("null"), ref);
var desc1 = new ActionDescriptor();
desc1.putBoolean(stringIDToTypeID("vectorMaskLinked"), true);
desc.putObject(charIDToTypeID("T "), charIDToTypeID("Lyr "), desc1);
executeAction(charIDToTypeID("setd"), desc, DialogModes.NO);
}CGM_ConnectMaskLinks.jsxを 以下のフォルダに保存。
C:\Program Files\Adobe\Adobe Photoshop CC\Presets\Scripts\- Photoshopを再起動。
Photoshop 2026(Windows)では、C:\Program Files\Adobe\Adobe Photoshop 2026\Presets\Scripts にこのフォルダーがありました。
このフォルダーへファイルを置くには管理者の権限が要るため、2026年10月の確認では配置と再起動は試していません。
[ファイル]→[スクリプト]→[参照]で保存したファイルを選べば、フォルダーに置かずに実行できました。
STEP.2 スクリプトを実行
- [ファイル] → [スクリプト] → [CGM_ConnectMaskLinks] を選択。
- 対象文書のマスクリンクが変更されるので、レイヤーパネルで鎖アイコンを確認する。エラーで中断した場合は、途中までの変更が残る可能性がある。
この記事で紹介しているコードは、GitHubのMOTOKI-LLC/cg-method-codeにもまとめています。
Photoshop 2026で実行した結果
2026年10月19日に、Photoshop 2026(27.11.0)とWindows 11 Pro で、記事のコードを変えずにCGM_ConnectMaskLinks.jsxとして保存し、[ファイル]→[スクリプト]→[参照]から実行しました。
試したのは、マスクのリンクを外したレイヤーを並べた練習用のファイルです(ファイルの用意は別のスクリプトで行ったので、確認には含めていません)。
実行前は、リンクを残した「黄」のレイヤーにだけ、サムネールとマスクの間に鎖のアイコンがあります。

実行すると、画面に何も表示されないまま、すべてのマスクに鎖のアイコンが付きました。
| 実行前のレイヤー | 実行後 |
|---|---|
| レイヤーマスクのリンクを外したレイヤー(赤) | リンクされた |
| ベクトルマスクのリンクを外したレイヤー(緑) | リンクされた |
| レイヤーマスクとベクトルマスクの両方のリンクを外したレイヤー(青) | 両方ともリンクされた |
| リンクを外したグループのマスクと、グループの中のレイヤーのマスク(紫) | 両方ともリンクされた |
| 非表示のレイヤーの、リンクを外したマスク | 非表示のままリンクされた |
| 最初からリンクされていたマスク(黄) | リンクされたまま |

選択していたレイヤーは、実行の前後で変わりませんでした。
実行後のヒストリーには、マスク1つごとに「マスクをリンク」または「ベクトルマスクをリンク」が並びました(この例では8つ)。
最初からリンクされていたマスクの分も、1つとして数えられています。
まとめて元に戻すときは、ヒストリーパネルで実行前の状態を選びます(ヒストリーパネルでの取り消しは、今回は試していません)。
背景の無い文書でも動いた
このコードは、背景があるかどうかで数え始める位置を変えています。
背景を通常のレイヤーに変えた文書でも、同じように[参照]から実行すると、すべてのマスクがリンクされました。
わざと外したリンクも繋がる
このスクリプトは、開いている対象文書のレイヤーマスクとベクトルマスクのリンクを変更します。スマートオブジェクトの内容を開いて処理するコードはありません。
マスクだけを動かすために、わざとリンクを外しておいたレイヤーも繋がります。
そうしたレイヤーがある文書では、実行後、レイヤーパネルの画像サムネールとマスクサムネールの間にある鎖アイコンをクリックして、必要な箇所だけリンクを外し直します。再び繋ぐには同じ位置の空白をクリックします。これはAdobeの操作案内に基づく補足で、今回実機では試していません。
確かめていないこと
Scriptsフォルダーへの配置と再起動、アートボード、スマートオブジェクトの中のレイヤー、Macと他の版での動作は、今回は確かめていません。
レイヤーを操作するスクリプトは、ほかにもあります。




まとめ
- すべてのレイヤーのマスクリンクを一括で再接続可能
- 外れたリンクを再接続できるが、すでにずれた位置は戻らない
- レイヤーとマスクのズレを防ぎデータ管理を効率化
Photoshopでレイヤーとマスクのリンクを一括で復元し、作業効率を向上させましょう。
よくある質問:レイヤーとマスクのリンクを一括で繋ぐ
このスクリプトでは何ができますか?
Photoshopで、レイヤーとマスクのリンクを一括で繋ぎ直せます。作業中に外れてしまったリンクを、まとめて再接続できるスクリプトです。
どんなメリットがありますか?
全レイヤーのマスクリンクを一括で再接続できます。手作業で1つずつリンクし直す手間を減らし、意図しないマスクのズレを防いでデータ管理を効率化できます。
誤ってリンクを外してしまったときにも使えますか?
はい。
Photoshop 2026で試すと、リンクを外したレイヤーマスクとベクトルマスクが、どちらもリンクされた状態に戻りました。
ただし、わざとリンクを外していたマスクも繋がるので、その場合は実行後にリンクを外し直してください。
どのレイヤーが対象になりますか?
Photoshop 2026で試すと、非表示のレイヤー、グループ、グループの中のレイヤーも含めて、文書の中のすべてのマスクがリンクされました。
レイヤーマスクとベクトルマスクの両方が対象です。
特定のレイヤーだけに限定する設定はありません。スマートオブジェクト内部の別文書は開かず、リンクを付けても画像やマスクの座標は元に戻しません。
スクリプトはどのように導入しますか?
記事のコードをテキストエディタ等に貼り付けてCGM_ConnectMaskLinks.jsxとして保存し、記事で案内しているフォルダに保存します。保存後にPhotoshopを再起動してください。
どうやって実行しますか?
[ファイル] → [スクリプト] → [CGM_ConnectMaskLinks] を選択します。
フォルダーに置かずに使う場合は、[ファイル]→[スクリプト]→[参照]で保存したファイルを選んで[読み込み]を押します。
正常に終わる場合、完了通知は表示されません。レイヤーパネルで対象のマスクに鎖アイコンが付いたか確認してください。コードには各マスクの設定エラーを受けて次へ進む処理や、自動で元に戻す処理がないため、途中で止まった場合は一部だけ変更される可能性があります。エラーが出たら実行前のPSDと比較し、未処理の箇所を確認します。エラーの再現試験はしていません。
スクリプトのコードはどこで確認できますか?
記事内に掲載しているほか、GitHubのMOTOKI-LLC/cg-method-codeにもまとめています。
メニューの表示や名称が記事と違う場合はどうすればよいですか?
Photoshopのバージョンによってメニューの名称や配置が変わることがあります。最新の操作手順は、Adobeの公式情報で確認してください。
