k_ikiの雑記帳

DTPのこと、創作のことなど、思いつくまま

選択文字または行の複製

要は、よく見掛ける try if 〜 else 〜 catch の書き方を覚えたかっただけです。
んで、カーソルを入れている時は段落全体を直後の行に複製、テキスト範囲を選択しているときは選択範囲の直後に選択範囲のテキストを複製というのを書きました。
その後、“InDesign duplicate”のキーワードでさらに情報を検索していたところ、半年前に米国Adobe Forumsで質問があり、Peter Kahrelさんがお書きになったものと一緒でした……。
まあ、これも学習の過程ということで、置いておきます。
動作確認環境:WindowsXP sp3/InDesign CS3(5.0.4)・CS5(7.0.4)
 

try {
    //フレーム内に挿入点を置いている時
    if (app.selection[0] instanceof InsertionPoint) {
        var myPar = app.selection[0].paragraphs[0];
        if (myPar.characters[-1].contents != "\r")
        myPar.insertionPoints[-1].contents = "\r";
        myPar.duplicate (LocationOptions.after, myPar.insertionPoints[-1])
        }
    //テキスト範囲を選択している時
    else {
        var mySel = app.selection[0];
        mySel.duplicate (LocationOptions.after, mySel.insertionPoints[-1]);
        }
    }
catch (_){}