DTPab

印刷やデザイン、アドビ製アプリやスクリプトなど、雑多な技術ブログ

文字に適用されている文字スタイルを一覧表示する

【2020-10-9 20:00 スクリプトを一部修正しました】

if (mySel.appliedNestedStyles[i] == null) continue;

if (mySel.appliedNestedStyles[i] === undefined) continue;

【ここまで】

今回もまた正規表現スタイル絡みのネタです。
業務上、他人が作ったデータを使って作業することが多いのですが、正規表現スタイルを先日のスクリプトで一旦俯瞰してから作業するようにしています。あのスクリプトは何も選択しないで実行するとドキュメントの段落スタイルを俯瞰しますが、文字列を選択して実行すると、その段落に設定されている先頭文字スタイル・先頭行スタイル・正規表現スタイルを順繰りに一覧表示させます。
動作としてはこんな感じです(ショートカットキーで実行しています)。

f:id:uske_S:20170615100126g:plain

これとは別に、正規表現スタイルでどんな文字スタイルが適用されているのかを確認したいことがあります。
というのも、正規表現スタイルで複数の文字スタイルを重ねがけすることができるものの、重ねがけしてしまうとどんな文字スタイルが適用されているのかパッとはわからないからです(文字スタイルパネル下部に注目)。

f:id:uske_S:20170615100940p:plain

この「¶(スタイル混在)」状態を開放すべく、任意で適用している文字スタイルと、自動で適用されている文字スタイルの両方を一覧で表示するスクリプトを使っています。

f:id:uske_S:20170615101626p:plain

コードはこの通り。かなり簡単です。

#target "indesign"
if (app.activeDocument.selection.length === 0) exit();
var mySel = app.activeDocument.selection[0];
try {
    var len = mySel.appliedNestedStyles.length;
    var myStr = "文字スタイル:"+mySel.appliedCharacterStyle.name+"\r";
    }
catch(e){alert("文字を選択してください"); exit();}
var nested = [];
for (var i=0; i<len; i++){
    if (mySel.appliedNestedStyles[i] === undefined) continue;
    nested.push(mySel.appliedNestedStyles[i].name);
    }
myStr += "自動スタイル:" + nested;
alert(myStr);

注意点としては、文字を複数選択して実行しても1文字目しか調べないことくらいでしょうか。個人的には、この1文字に何(文字スタイル)があたっているのか知りたい!というときに使うので、そこは不自由してません。

以上、文字に適用されている文字スタイルを一覧表示するスクリプトのご紹介でした。