Amazon10/19まで!プライム感謝祭開催中!セール会場へ

Photoshopの文字レイヤーをJSXで一括置換|プレビューと複製で確認

文字レイヤーの「2025」を「2026」へ置き換えるJSXです。

初期状態では一致数を表示するだけで、文字は変更しません。

置換を有効にしても元文書を残し、未保存の複製へ変更を加えます。

画像化された文字やスマートオブジェクト内部の文字は対象外です。

2026年10月16日に、Windows 11 Pro(10.0.26200)のPhotoshop 27.11.0(日本語表示)でこのコードを実行し、プレビューの一致数、複製への置換、元文書が変わらないことを確かめました。

目次

標準の検索と置換・データセットとの使い分け

表示されている文字の検索・置換を画面で操作する場合は、標準の[編集]→[検索と置換]も候補です。Adobeの説明では、非表示やロック中の文字レイヤーは検索対象になりません。このJSXは非表示でも完全ロックされていない文字を対象にするため、同じ検索範囲として扱わないでください。

この例は、開いている1文書のグループ内まで検索し、一致数を確認してから複製へ変更する用途です。選択したレイヤーだけの処理、フォルダー内の全PSD、スマートオブジェクトの内部は扱いません。行ごとに異なる文言や画像を入れた複数PSDを作る場合は、CSVを使うデータセットへ進みます。

初めてJSXを使う場合は、JSXの保存と参照実行を確認してください。標準操作の範囲はAdobeの「テキストの検索と置換」を2026年10月3日に照合しています。ここで説明した標準操作も、今回のPhotoshop実機確認ではありません。

練習用PSDと検索文字列の準備

新しい文書に文字レイヤーA「CGM 2025 / 2025」を作ります。

グループ内に文字レイヤーB「CGM 2025」を作り、比較用に「CGM 2024」のレイヤーも追加してください。

PSDをpractice-text.psdとして保存し、原本のコピーも残します。

AとBをロックしない場合、一致するレイヤーは2個、文字列の出現回数は3回です。

確認に使ったのは、700×280px・白背景の文書に、Aと、GROUP_Bの中のB、比較用のCOMPARE_2024を置いた自作のPSDです。

3つともロックも非表示もなく、書式はArialの1種類だけです。

このPSDの作成は、画面操作ではなく自動処理で行いました。

Photoshopで、文字AのCGM 2025 / 2025、グループ内の文字BのCGM 2025、比較用のCGM 2024を表示した練習用PSD
2026-10-16撮影。Adobe Photoshop 27.11.0 (20260929.r.26 8c16e56)、Windows 11 Pro (10.0.26200)。確認に使った自作のpractice-text.psd。Aに2025を2回、GROUP_Bの中のBに1回入れ、比較用の2024も置いた。PSDの作成は自動処理で行った。

コードのFINDが検索文字列、REPLACEが置換後の文字列です。

大文字小文字を区別し、FINDと一致する部分文字列をすべて置換します。文字レイヤー全体の一致や単語単位の一致を判定するものではなく、正規表現も使いません。

FINDを空にすると文字間へ置換文字列が挿入されるため、このコードでは空文字と同じ文字列同士の置換を停止します。

プレビューから始めるJSXコード

#target photoshop
(function () {
    var FIND = "2025";
    var REPLACE = "2026";
    var DRY_RUN = true; // First count matches. Set false only after reviewing the result.
    if (app.documents.length === 0) { alert("Open a practice PSD first."); return; }
    if (!FIND.length || FIND === REPLACE) { alert("Use a non-empty, different search string."); return; }
    var source = app.activeDocument;
    // Changes are confined to an unsaved duplicate; the original stays open.
    var work = DRY_RUN ? source : source.duplicate(source.name + "-text-preview");
    var matchedLayers = 0, occurrences = 0, changedLayers = 0, skipped = 0, errors = [];
    function walk(layers, parentLocked) {
        for (var i = 0; i < layers.length; i++) {
            var layer = layers[i];
            var locked = parentLocked || layer.allLocked;
            if (layer.typename === "LayerSet") {
                walk(layer.layers, locked);
            } else if (layer.typename === "ArtLayer" && layer.kind === LayerKind.TEXT) {
                if (locked) { skipped++; continue; }
                try {
                    var text = layer.textItem.contents;
                    var parts = text.split(FIND);
                    if (parts.length > 1) {
                        matchedLayers++;
                        occurrences += parts.length - 1;
                        if (!DRY_RUN) {
                            layer.textItem.contents = parts.join(REPLACE);
                            changedLayers++;
                        }
                    }
                } catch (e) { errors.push(layer.name + ": " + e.message); }
            }
        }
    }
    walk(work.layers, false);
    alert((DRY_RUN ? "PREVIEW ONLY" : "UNSAVED DUPLICATE") +
        "\nMatched layers: " + matchedLayers + "\nOccurrences: " + occurrences +
        "\nChanged layers: " + changedLayers + "\nLocked text layers skipped: " + skipped +
        "\nErrors: " + errors.length + "\n" + errors.join("\n"));
}());

一致数を確認して複製へ置換する

練習ZIPのarticle-1394.jsxを、Photoshopの[ファイル]→[スクリプト]→[参照]から実行します。

最初はDRY_RUN=trueのまま、PREVIEW ONLY、Matched layers: 2、Occurrences: 3、Changed layers: 0になることを確認してください。

2026年10月16日の確認では、「スクリプト警告」という題名の通知に、この4項目とLocked text layers skipped: 0、Errors: 0が表示されました。

実行の前後で、元文書の文字は変わっていません。

スクリプト警告の通知に、PREVIEW ONLY、Matched layers 2、Occurrences 3、Changed layers 0、Errors 0と表示された画面
2026-10-16撮影。Adobe Photoshop 27.11.0 (20260929.r.26 8c16e56)、Windows 11 Pro (10.0.26200)。DRY_RUN=trueのまま本文のコードを[ファイル]→[スクリプト]→[参照]から実行したときの通知。2レイヤー・3か所を検出し、変更は0。

入力を変更した場合は、それに応じて期待する数も変わります。

検索範囲を確認したら、JSXのDRY_RUNをfalseに変更して同じ文書で実行します。

確認では、DRY_RUNの行だけをfalseに書き換えたファイルを、同じ[参照]から実行しました。

通知の1行目はUNSAVED DUPLICATEで、Matched layers: 2、Occurrences: 3、Changed layers: 2、Locked text layers skipped: 0、Errors: 0でした。

スクリプト警告の通知に、UNSAVED DUPLICATE、Matched layers 2、Occurrences 3、Changed layers 2、Errors 0と表示された画面
2026-10-16撮影。Adobe Photoshop 27.11.0 (20260929.r.26 8c16e56)、Windows 11 Pro (10.0.26200)。DRY_RUNの行だけをfalseにして同じ方法で実行したときの通知。未保存の複製で2レイヤーを変更した。

別文書の複製が作られ、Aは「CGM 2026 / 2026」、Bは「CGM 2026」になり、比較用の2024は変わらないことを確認してください。

確認では、practice-text.psd-text-previewという名前の複製が隣のタブに開き、AとBだけが2026に変わりました。

未保存の複製で、AがCGM 2026 / 2026、BがCGM 2026に変わり、比較用のCGM 2024が残ったPhotoshopの画面
2026-10-16撮影。Adobe Photoshop 27.11.0 (20260929.r.26 8c16e56)、Windows 11 Pro (10.0.26200)。置換後に開いた複製practice-text.psd-text-preview。AとBの2025が2026に変わり、比較用の2024は変わらない。タブの*は未保存の印。

元文書へ切り替え、2025のままであることも確認します。

元文書のタブをクリックすると、AもBも2025のままでした。

元のpractice-text.psdのタブに戻ると、AとBが2025のままで、隣に未保存の複製のタブがあるPhotoshopの画面
2026-10-16撮影。Adobe Photoshop 27.11.0 (20260929.r.26 8c16e56)、Windows 11 Pro (10.0.26200)。置換のあと、元文書のタブをクリックした実機画面。AもBも2025のまま。複製は隣のタブに残っている。

スクリプトは複製を自動保存しません。

確認では、実行後の複製は未保存のままで、元文書も保存済みのまま変わっていませんでした。

グループは再帰的にたどります。

非表示でもロックされていない文字レイヤーは対象で、レイヤーまたは親グループが完全ロックされている場合は除外します。

Locked text layers skippedは除外した文字レイヤー数です。

別種類の制限などで文字を書き換えられない場合はErrorsへ記録されます。

保存前の確認と戻し方

完了表示意味
Matched layers検索文字があるレイヤー数。1レイヤーの複数一致は1個
Occurrences検索文字列の出現回数
Changed layers書き換えに成功したレイヤー数。プレビューでは0
Errors文字の読み書きに失敗したレイヤー名と理由

文字全体のcontentsを更新するため、複数の書式が混在した文字レイヤーで書式が保たれることは保証しません。

文字のはみ出し、改行、フォント、文字サイズ、字間を複製側で確認してください。

エラーがある場合は一部だけ変更されている可能性があるため、成功件数だけで完成と判断しません。

結果が正しければ複製を別名のPSDとして保存します。

戻す場合は複製を保存せず閉じ、元文書へ戻ります。

原本の上書きは行わないでください。

複製に必要なメモリが不足する場合はそこで中断し、小さい練習用PSDから確認します。

確認範囲と公式資料

2026年10月3日、AdobeのJSX実行手順を確認しました。

空検索の停止、プレビュー、複製への変更、グループとロック、読み書きエラーの扱いは、2026年10月3日にNode.jsの模擬環境で確認しました。配布ZIPのarticle-1394.jsxが本文のコードと一致することも照合しています。

2026年10月16日に、Windows 11 Pro(10.0.26200)のPhotoshop 27.11.0(日本語表示)で、本文のコードを[ファイル]→[スクリプト]→[参照]から実行しました。

同じ日に、配布ZIPのarticle-1394.jsxが本文のコードと同じ内容であることも確かめています。

DRY_RUNをfalseにした実行には、その1行だけを書き換えたファイルを使いました。

項目DRY_RUN=trueDRY_RUN=false
通知の1行目PREVIEW ONLYUNSAVED DUPLICATE
Matched layers22
Occurrences33
Changed layers02
Locked text layers skipped00
Errors00
文字が変わった文書なし未保存の複製だけ(AとBが2026、比較用の2024はそのまま)
2026年10月16日、Windows 11 Pro(10.0.26200)/Photoshop 27.11.0/日本語UIで確認。ロックも非表示もない単一書式の文字レイヤー3つ(1つはグループ内)を置いた自作のPSDで実行した結果。

練習用PSDの作成と、実行前後の文字や保存状態の読み取りは、画面操作ではなく自動処理で行いました。

複製を別名のPSDとして保存する画面操作は、今回は確かめていません。

ロックした文字レイヤーや親グループ、非表示のレイヤー、ほかの編集制限、複数の書式が混在した文字、スマートオブジェクトの内部は、Photoshop本体では確かめていません。

空の検索文字列、読み書きのエラー、メモリが足りないときの動きも、Photoshop本体では確かめていません。

よくある質問:文字レイヤーをJSXで一括置換

このJSXは、何をするものですか?

文字レイヤーの「2025」を「2026」へ置き換えるJSXです。初期状態では、一致数を表示するだけで、文字は変更しません。置換を有効にしても元文書を残し、未保存の複製へ変更を加えます。画像化された文字やスマートオブジェクト内部の文字は対象外です。

標準の「検索と置換」とは、どう使い分けますか?

表示されている文字の検索・置換を画面で操作する場合は、標準の[編集]→[検索と置換]も候補です。Adobeの説明では、非表示やロック中の文字レイヤーは検索対象になりません。このJSXは、非表示でも完全ロックされていない文字を対象にするため、同じ検索範囲として扱わないでください。このJSXは、開いている1文書のグループ内まで検索し、一致数を確認してから複製へ変更する用途で、選択したレイヤーだけの処理、フォルダー内の全PSD、スマートオブジェクトの内部は扱いません。行ごとに異なる文言や画像を入れた複数PSDを作る場合は、CSVを使うデータセットへ進みます。

練習用のPSDは、どう用意しますか?

新しい文書に文字レイヤーA「CGM 2025 / 2025」を作り、グループ内に文字レイヤーB「CGM 2025」を作って、比較用に「CGM 2024」のレイヤーも追加します。PSDをpractice-text.psdとして保存し、原本のコピーも残します。AとBをロックしない場合、一致するレイヤーは2個、文字列の出現回数は3回です。

置換のルールを教えてください。

コードのFINDが検索文字列、REPLACEが置換後の文字列です。大文字小文字を区別し、FINDと一致する部分文字列をすべて置換します。文字レイヤー全体の一致や単語単位の一致を判定するものではなく、正規表現も使いません。

最初は、どう実行すればよいですか?

最初はDRY_RUNがtrueのまま実行し、PREVIEW ONLY、Matched layers: 2、Occurrences: 3、Changed layers: 0になることを確認してください。入力を変更した場合は、それに応じて期待する数も変わります。検索範囲を確認したら、JSXのDRY_RUNをfalseに変更して同じ文書で実行します。別文書の複製が作られ、Aは「CGM 2026 / 2026」、Bは「CGM 2026」になり、比較用の2024は変わらないことを確認してください。元文書へ切り替え、2025のままであることも確認します。スクリプトは複製を自動保存しません。

ロックされた文字レイヤーや、非表示のレイヤーは、どうなりますか?

グループは再帰的にたどります。非表示でもロックされていない文字レイヤーは対象で、レイヤーまたは親グループが完全ロックされている場合は除外します。完了表示のLocked text layers skippedは、除外した文字レイヤー数です。別種類の制限などで文字を書き換えられない場合は、Errorsへ記録されます。

保存する前に、何を確認しますか? 実機で確認されていますか?

完了表示のMatched layersは検索文字があるレイヤー数(1レイヤーの複数一致は1個)、Occurrencesは検索文字列の出現回数、Changed layersは書き換えに成功したレイヤー数(プレビューでは0)、Errorsは文字の読み書きに失敗したレイヤー名と理由です。文字全体のcontentsを更新するため、複数の書式が混在した文字レイヤーで書式が保たれることは保証しません。文字のはみ出し、改行、フォント、文字サイズ、字間を複製側で確認してください。エラーがある場合は、一部だけ変更されている可能性があるため、成功件数だけで完成と判断しません。結果が正しければ複製を別名のPSDとして保存し、戻す場合は複製を保存せず閉じます。原本の上書きは行わないでください。2026年10月16日に、Windows版Photoshop 27.11.0で、ロックも非表示もない単一書式の練習用PSDを使い、プレビュー(2レイヤー・3か所・変更0)と複製への置換(変更2レイヤー)、元文書が2025のまま残ることを確かめました。ロックと空検索、読み書きエラーの扱いは、2026年10月3日にNode.jsの模擬環境で確認したもので、Photoshop本体では確かめていません。非表示のレイヤー、書式の保持、複製を別名で保存する操作も、実機では確かめていません。最新はAdobe公式の資料で確認してください。

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

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

Photoshopのおすすめ書籍

動作要件とPCの確認項目

周辺機器の優先度

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