異なるファイル間でスウォッチ指定のテキスト検索・置換を行うと、スウォッチに連番が追加されるBugについて


問題の概要

2つのInDesignファイル(a.inddb.indd)があります。それぞれに「red」という同じ名前のスウォッチが存在しますが、CMYKの値は異なります

この状態で、ファイルをまたいで色を指定し、「検索・置換」を順番に実行すると、2ファイル目以降のスウォッチ名に連番(red 2red 3…)が追加されてしまうという問題が発生します。


再現手順

  1. a.indd を開き、「検索・置換」ウィンドウを開く。
  2. 検索キーワードを入力(例:「test」)。
  3. 「置換フォーマット」で文字カラーを「red」スウォッチに設定し、置換を実行する。
    • ここまでは正常に動作する。
  4. a.indd を閉じる(InDesignアプリは終了しない)。
  5. b.indd を開き、同じ手順(1〜3)を繰り返す。
    • このとき、カラースウォッチを選択すると「red 2」のように連番が付いた名前が表示される。
    • 置換を実行すると、スウォッチパネルに「red 2」「red 3」…といった新しいスウォッチが追加されてしまう。

> ※注意: 手順4でInDesignアプリ自体を一度終了してから再起動すると、この問題は発生しません。

検索スコープ:「ドキュメント」(「すべてのドキュメント」ではありません)


動作環境

  • OS: macOS Sequoia 15.5〜(恐らく全バージョンはそうだ)
  • InDesign: 2020〜2026(すべてのバージョンで再現を確認。Windowsは未検証)

IDMLファイルでの検証

IDMLファイル、およびIDMLから変換したInDesignファイルでも同じ問題が発生することを確認済みです。


スクリプトによる再現コード

この問題は手動操作だけでなく、スクリプトからも再現できます(これは同然だと思います)。スクリプトで再現:

var files = [
    "a.indd",
    "b.indd",
];

var curPath = new File($.fileName).path;
var len = files.length;
for (var i = 0; i < len; i++) {
    var doc = app.open(new File(curPath + "/" + files[i]));
    var redColor = doc.swatches.itemByName("red");
    var tf = doc.textFrames.itemByName("tf2");//target textFrame: **edit this
    changeKeywordColor(tf, "test", redColor);
    doc.close(SaveOptions.YES);//close document
}

function changeKeywordColor(textFrameObj, keyWord, colorObj) {
    app.findTextPreferences = NothingEnum.nothing;
    app.changeTextPreferences = NothingEnum.nothing;

    app.changeTextPreferences.fillColor = NothingEnum.nothing;
    app.changeTextPreferences.fillColor = colorObj;//red color

    app.findTextPreferences.findWhat = keyWord;
    textFrameObj.changeText();// Search scope: only the target textFrame
}

まとめ

InDesignアプリを終了せずに複数のファイルを順番に処理する際、同名で異なるCMYK値を持つスウォッチが競合し、スウォッチ名に連番が付加されるというバグです。かなり前Adobeに報告したが、なにも進捗ない。(該当Issue&テストファイル:https://community.adobe.com/questions-671/new-swatch-with-the-incremental-number-is-added-after-find-change-text-between-different-files-896831