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

Photoshopスクリプト(jsx)│選択したレイヤーを別ドキュメントに複製する方法

Photoshopで選択したレイヤーを新規ドキュメントに複製し、自動でトリミングするスクリプトを紹介します。

UI素材の書き出し前調整や、個別レイヤーの切り出し作業を効率化できます。

2026年10月19日に、Photoshop 2026(27.11.0)とWindows 11 Proで記事のコードを実行し、できる文書を確かめました。

選んだレイヤーは、描画部分ぴったりの大きさの新しい文書に複製され、元の文書は変わりませんでした。

ただし、新しい文書の名前はレイヤー名ではなく「Adobe Photoshop」になり、解像度は72ppiになりました。

空のレイヤーを選ぶとエラーで止まりました。

2026年10月20日にコードを直し、新しい文書の名前がレイヤー名になり、解像度は元の文書と同じになるようにしました。

空のレイヤーを選んだときは警告を出して止まり、定規の単位も実行前に戻るようにしました。

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

選択したレイヤーを新規ドキュメントに複製して自動トリミングするスクリプトの実行イメージ。
目次

スクリプトの特徴とメリット

  • 選択したレイヤーのみを新規ドキュメントへ複製
  • 描画ピクセルに合わせて不要な余白を自動トリミング
  • 元のドキュメントを汚さず個別パーツの調整が可能
スポンサーリンク

スクリプトの導入手順

STEP.1 スクリプトファイルの作成と配置

  1. 先に元のPSDを保存し、コピーで試します。最初は日本語表示のPhotoshopでRGB・8bitの文書を開き、描画のあるレイヤーかグループを1つ選んでください。後述のスクリプトコードをテキストエディタに貼り付けて保存

Photoshopの各種設定や操作テクニックは、まとめ記事でも解説しています。

var doc = activeDocument;
var oldUnits = preferences.rulerUnits;
preferences.rulerUnits = Units.PIXELS;
var layer = doc.activeLayer;
var layerName = layer.name;
var w = doc.width;
var h = doc.height;

var b = doc.activeLayer.bounds;
var x1 = parseInt(b[0], 10);
var y1 = parseInt(b[1], 10);
var x2 = parseInt(b[2], 10);
var y2 = parseInt(b[3], 10);

if (x2 <= x1 || y2 <= y1) {
    alert("選んだレイヤーに描画された部分がありません。");
} else {
    var newDoc = documents.add(w, h, doc.resolution, layerName, NewDocumentMode.RGB, DocumentFill.TRANSPARENT);
    activeDocument = doc;
    layer.duplicate(newDoc);
    activeDocument = newDoc;
    newDoc.crop([x1, y1, x2, y2]);

    newDoc.layers.getByName('レイヤー 1').remove();
}
preferences.rulerUnits = oldUnits;

このコードは、定規の単位を一時的にピクセルにしてから、アクティブなレイヤー1つ(またはグループ1つ)のboundsを読み取ります。複数選択したレイヤーすべてを順に複製する処理ではありません。座標はparseIntで整数化するため、小数座標やレイヤー効果がある場合も必ず描画の外周に一致するとは限りません。

範囲が無い(何も描かれていない)レイヤーのときは、「選んだレイヤーに描画された部分がありません。」と警告して止まります。

次に、元の文書と同じ幅・高さ・解像度で、レイヤー名を名前にした透明のRGB文書を作り、レイヤーを複製します。色モードはRGB指定で、元文書のビット深度やカラープロファイルを明示して引き継ぐコードではありません。

最後に、読み取った範囲で切り抜き、新しい文書の「レイヤー 1」を名前で探して削除します。この名前は日本語表示が前提です。処理が最後まで進めば定規の単位を実行前に戻しますが、途中でエラーになると復帰の行に到達しません。その場合は単位と作成途中の文書を確認してください。

2026年10月19日までのコードは、4行目を var name = layer.name; としていました。

name はPhotoshopのスクリプトで最初から使われている名前なので、アプリの名前「Adobe Photoshop」のまま変わらず、レイヤー名が文書名に入りませんでした。

直したコードでは、5行目の変数名を layerName にしています。

  1. CGM_DuplicateSelectLayer.jsxをPhotoshopのScriptsフォルダに配置します。
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. 複製したいレイヤーを選択します。
  2. [ファイル] → [スクリプト] → [CGM_DuplicateSelectLayer]を実行します。
  3. 新規ドキュメントが作成され、レイヤーの複製と余白のトリミングが自動で完了します。

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

実行しても確認の窓や完了の表示は出ず、新しい文書のタブが1つ増えて前面に出ます。

新しい文書は保存されていないので、残したいときは自分で保存します。

文書を開いていないときに実行すると、「エラー 1302: 該当する要素はありません」の窓が出て止まりました(直す前のコードはライン: 2、直したコードはライン: 1)。

Photoshop 2026で実行した結果

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

新しい文書の名前が常に「Adobe Photoshop」になる、解像度が72ppiになる、空のレイヤーでエラーになる、定規の単位をピクセルに変えたまま戻さない、の4つの不具合がありました。

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

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

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

練習用の文書(800×500ピクセル)と、レイヤーを選んだ状態は別のスクリプトで用意したので、その部分は確認に含めていません。

文書の大きさ・解像度・レイヤー・ヒストリーは、実行の前後にスクリプトで読み取って比べました。

選んだレイヤーが、描画部分ぴったりの新しい文書になる

左は元の文書で白い背景に赤・緑・黄・青の四角がある。右は実行後にできた新しい文書で、タブの名前はAdobe Photoshop、カンバスは赤い四角だけ、レイヤーパネルにはボタンのレイヤーが1つだけある
2026-10-19撮影。Adobe Photoshop 2026 (27.11.0)、Windows 11 Pro (10.0.26200)。「ボタン」を選んで実行した結果。描画部分と同じ横200×縦100ピクセルの新しい文書ができ、レイヤーは「ボタン」1つだけだった。

「ボタン」(横200×縦100ピクセルの赤い四角)を選んで実行しました。

新しい文書は横200×縦100ピクセル・72ppiで、中身は「ボタン」のレイヤー1つだけでした。

レイヤー名はそのままで、位置は新しい文書の左上にそろっていました。

新しい文書のヒストリーには「新規」「レイヤーを複製」「切り抜き」「レイヤーを削除」の4つが積まれました。

元の文書は、レイヤーの数・位置とも実行前と同じで、保存済みの状態のままでした。

直す前のコードは、新しい文書の名前が「Adobe Photoshop」になった

上は文書のタブの並びで、dup-72.psd の後ろに Adobe Photoshop という名前のタブが4つ並んでいる。下は黄色と青の四角が入った新しい文書と、グループ パーツの中に月と星があるレイヤーパネル
2026-10-19撮影。Adobe Photoshop 2026 (27.11.0)、Windows 11 Pro (10.0.26200)。4回実行した後のタブ。新しい文書の名前はすべて「Adobe Photoshop」だった。下はグループ「パーツ」を選んで実行した結果で、グループごと複製された。

新しい文書のタブの名前は、どのレイヤーを選んでも「Adobe Photoshop」でした。

直す前のコードの4行目で使っていた name という名前に、レイヤー名が入らないためです。

直したコードでは、新しい文書の名前は選んだレイヤーの名前になります。

グループ「パーツ」を選んだときは、中の「星」「月」ごとグループが複製され、新しい文書はグループ全体を囲む横210×縦100ピクセルになりました。

「レイヤー 1」という名前のレイヤーは「レイヤー 2」に変わる

左は実行前のレイヤーパネルで、レイヤー 1 が選ばれている。右は実行後の新しい文書で、緑の四角とレイヤー 2 という名前のレイヤーが1つある
2026-10-19撮影。Adobe Photoshop 2026 (27.11.0)、Windows 11 Pro (10.0.26200)。「レイヤー 1」を選んで実行した前後。新しい文書では名前が「レイヤー 2」に変わった。

新しいレイヤーの初期の名前と同じ「レイヤー 1」を選んで実行しました。

新しい文書には最初から「レイヤー 1」があるので、複製したレイヤーの名前は「レイヤー 2」に変わりました。

削除されたのは最初からある空の「レイヤー 1」で、中身は正しく残りました。

名前をそのまま使いたいときは、実行した後に名前を付け直してください。

直す前のコードは、空のレイヤーを選ぶとエラーで止まった

コマンド処理を完了できません、範囲内に何も含まれていないかカンバスと重なりません、という窓と、エラー 8007 ユーザーにより操作がキャンセルされました ライン 18 という窓、空と レイヤー 1 の2つだけが残った新しい文書のレイヤーパネル
2026-10-19撮影。Adobe Photoshop 2026 (27.11.0)、Windows 11 Pro (10.0.26200)。空のレイヤーを選んで実行したときの2つの窓と、残った新しい文書。

何も描いていないレイヤーを選んで実行しました。

「コマンド処理を完了できません。範囲内に何も含まれていないか、カンバスと重なりません。」という窓が出て、[OK]の後に「エラー 8007」(ライン: 18)の窓が出ました。

切り抜く範囲が無いので、切り抜きの命令で止まっています。

新しい文書(800×500ピクセル・中身なし)は作られたまま残りました。

直したコードでは、新しい文書を作る前に範囲を確かめて、警告を出して止まります。

直す前のコードは、解像度が72ppiになり、定規の単位がピクセルのまま残った

300ppi・定規の単位をセンチメートルにした文書で、「ボタン」を選んで実行しました。

新しい文書は横200×縦100ピクセルで、ピクセル数は元のレイヤーと同じでしたが、解像度は72ppiでした。

直したコードでは、新しい文書の解像度は元の文書と同じになります。

実行した後、定規の単位はセンチメートルからピクセルに変わったままでした。

直したコードでは、正常終了時と空のレイヤーを判定した場合に実行前の単位に戻ります。途中の複製・切り抜き・レイヤー削除でエラーになる場合の復帰処理はありません。

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

2026年10月20日に、直したコードを同じ練習用の文書で実行しました。

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

「ボタン」を選ぶと、名前が「ボタン」・横200×縦100ピクセル・72ppiの新しい文書ができ、ヒストリーは直す前と同じ4つでした。

300ppi・定規の単位をセンチメートルにした文書では、新しい文書が横200×縦100ピクセル・300ppiになり、実行後の定規の単位はセンチメートルのままでした。

グループ「パーツ」を選ぶと、名前が「パーツ」・横210×縦100ピクセルの文書にグループごと複製されました。

「レイヤー 1」を選ぶと、文書の名前は「レイヤー 1」で、複製したレイヤーの名前は直す前と同じく「レイヤー 2」になりました。

空のレイヤーを選ぶと、新しい文書は作られず、元の文書も変わりませんでした。

このときは警告の窓の代わりに文字を記録する版で確かめたので、警告の窓が画面に出るところは確かめていません。

文書を開いていないときは、「エラー 1302」(ライン: 1)で止まりました。

確かめていないこと

Scriptsフォルダーへの配置と再起動、メニューに出るスクリプト名、2つ以上のレイヤーを選んだ場合、レイヤー効果の付いたレイヤー、カンバスからはみ出したレイヤー、背景レイヤー、文字レイヤー、Mac版と他の版は確かめていません。

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

レイヤー操作を効率化するスクリプトは、ほかにも紹介しています。

スポンサーリンク

まとめ

  • 選択レイヤーをワンクリックで新規ドキュメントに複製
  • 不要な余白の自動トリミングでサイズ調整の手間を削減
  • アイコンやUIパーツなどの個別編集を効率化

日々のルーティン作業にスクリプトを取り入れ、レイヤー複製とトリミングの手間を削減しましょう。

よくある質問:選択レイヤーを新規ドキュメントに複製してトリミングする

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

Photoshopで選択したレイヤーを新規ドキュメントに複製し、描画ピクセルに合わせて不要な余白を自動でトリミングします。UI素材の書き出し前の調整や、個別レイヤーの切り出し作業に使えます。

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

選択したレイヤーだけを新規ドキュメントへ複製できます。余白の自動トリミングでサイズ調整の手間を減らせます。元のドキュメントを汚さず、個別のパーツを調整できます。

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

記事のスクリプトコードをテキストエディタに貼り付けて保存し、PhotoshopのScriptsフォルダに配置します。配置後にPhotoshopを再起動してください。

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

複製したいレイヤーを選択し、[ファイル] → [スクリプト] → [CGM_DuplicateSelectLayer] を実行します。新規ドキュメントが作成され、レイヤーの複製と余白のトリミングが自動で完了します。

実行しても元のドキュメントは変わりませんか?

検証した条件では元の文書のレイヤーや保存状態は変わりませんでした。複製と切り抜きは新規ドキュメント側で行います。念のため、大切なファイルは事前に別名保存してから試してください。

どんな作業に向いていますか?

アイコンやUIパーツなどを個別に編集したいときに向いています。日々のルーティン作業にスクリプトを取り入れて、レイヤー複製とトリミングの手間を減らせます。

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

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

新しいドキュメントの名前はレイヤー名になりますか?

2026年10月20日に直したコードでは、選んだレイヤーの名前になります。

2026年10月19日までのコードでは、4行目の name にレイヤー名が入らず、どれも「Adobe Photoshop」という名前でした。

解像度は元のドキュメントと同じになりますか?

2026年10月20日に直したコードでは、元のドキュメントと同じ解像度になります。

300ppiの文書で試したところ、ピクセル数も解像度も同じでした。

2026年10月19日までのコードでは、解像度だけが72ppiになっていました。

空のレイヤーを選ぶとどうなりますか?

2026年10月20日に直したコードでは、「選んだレイヤーに描画された部分がありません。」と警告して止まり、新しい文書は作られません。

描画のあるレイヤーを選び直してから実行してください。

2026年10月19日までのコードでは、切り抜きの所でエラーが出て止まり、中身の無い新しい文書が残っていました。

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

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

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

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

Photoshopのおすすめ書籍

動作要件とPCの確認項目

周辺機器の優先度

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