InDesignスクリプトを使用した段落スタイル名、文字スタイル名の一括変換

InDesignやFrameMakerなどのDTPアプリケーションで作成された文書を、日本語から他の言語へ翻訳する場合、文字化けの回避や作業をしやすくするために、ファイル名やスタイル名などを英数字に置き換える前準備を行うことがあります。
例えば、日本語のスタイル名が設定されているInDesignデータを海外の環境で開いた場合、文字化けが起こったり、意味が通じなかったりするなど、作業がスムーズに進まなくなる可能性があります。
こうしたことを避けるため、弊社ではスタイル名を一括で変換するスクリプトを作成し活用しています。
スクリプトを使うメリットは、時間の短縮と、手動による変換ミスを防ぐことができることです。
今回は、InDesignスクリプトを使った段落スタイル名と文字スタイル名の変換手順をご紹介します。

手順1:変換テーブルの作成

InDesignドキュメントで使用されているスタイル名と、変換したいスタイル名を、タブ区切りのテキストファイルにまとめます。
段落スタイル用を「ParagraphStyle.txt」、文字スタイル用を「TextStyle.txt」として保存します。

段落スタイルの変換規則をまとめた「ParagraphStyle.txt」

文字スタイルの変換規則をまとめた「TextStyle.txt」

手順2:スクリプトファイルの作成

「ReplaceStyleName.jsx」という名前でスクリプトファイルを作成します。

TAB = String.fromCharCode(9); // タブコード

// 段落スタイル名を置換
fileObj = new File ("Macintosh HD:ParagraphStyle.txt");
flag = fileObj.open ("r");
type = 'paragraph';
ReplaceStyleName (flag, type);

// 文字スタイル名を置換
fileObj = new File ("Macintosh HD:TextStyle.txt");
flag = fileObj.open ("r");
type = 'text';
ReplaceStyleName (flag, type);

// 各スタイル名を置換
function ReplaceStyleName (flag, type) {
    if (flag) {
        // 単語読み込み
        srcText = new Array();
        repText = new Array();
        count = 0;
        while (!fileObj.eof) {
            text = fileObj.readln(); // 1行読み込む
            txtItem = text.split(TAB); // タブコードで分割
            srcText[count] = txtItem[0]; // 元の文字
            repText[count] = txtItem[1]; // 置換する文字
            count = count + 1;
        }

        // ドキュメントにある段落スタイル名を取得
        if (type == 'paragraph') { var cStyles= app.activeDocument.paragraphStyles; }
        
        // ドキュメントにある文字スタイル名を取得
        else if (type == 'text') { var cStyles= app.activeDocument.characterStyles; }
        
        for (var i = 0; i< cStyles.length; i++) {
            for (var j = 0; j< count; j++) {
                if (cStyles[i].name == srcText[j]) {cStyles[i].name = repText[j]; }
            }
        }
    }
}

スクリプト内に、手順1で作成した「ParagraphStyle.txt」と「TextStyle.txt」のパスを入力 (4行目、10行目) します。
作成したスクリプトファイル「ReplaceStyleName.jsx」は、以下のフォルダに保存します。

Mac OS
ユーザー/[ユーザー名]/ライブラリ/Preferences/Adobe InDesign/[バージョン]/[言語]/Scripts/Scripts Panel

Windows 10
C:\Users\[ユーザー名]\AppData\Roaming\Adobe\InDesign\[バージョン]\[言語]\Scripts\Scripts Panel

手順3:スクリプトの実行

スタイル名を変更したいInDesignドキュメントを開き、スクリプト「ReplaceStyleName.jsx」を実行します。

以下のように段落スタイルと文字スタイルが変更されます。

変換前の段落スタイル

変換後の段落スタイル

変換前の文字スタイル

変換後の文字スタイル

翻訳するデータを作成する際には、ファイル名、スタイル名等の名称をあらかじめ英数字を使用して作成することをおすすめしますが、弊社ではバッチファイルやマクロ、スクリプト等を使ったデータ処理も行なっています。
翻訳、データ処理、DTP 等も含め、是非弊社にご用命いただけますよう心よりお待ち申し上げております。

* なおこのスクリプトは、macOS MojaveのInDesign 2021で動作確認しました。
自由にコピー、使用していただいて構いませんが、このスクリプトを使用して発生した不具合等については一切の責任を負い兼ねますのでご了承ください。

次の記事

翻訳者さんへの期待あれこれ