Skip navigation
nobusann
Currently Being Moderated

スクリプトで文字列のある範囲を一度に処理する方法

Aug 27, 2010 5:52 PM

InDesignのスクリプトで、なかなか解決方法が見つからずに、悩んでいますので、もし、よい方法をご存じのかたがいましたら、

アドバイスをよろしくお願いいたします。

 

 

InDesignはCS2とCS3で作業しています。

 

今回の質問としましては、スクリプト言語はAppleScript以外であれば、問いませんので、よろしくお願いいたします。

 

 

文字列としてたとえば1000文字がテキストフレームにあるとします。

 

その文字列を1~50文字までが90%の長体として、51~1000文字までを80%にしないといけないと仮定した場合に

すべてのCharacterをLoopしながら属性を与えていくのはできるのですが、それだと、あまりにも処理時間がかかってしまっています。

 

フレームの数、文字列の数もそうとうな場合に上記のようなLoop以外の方法がありますと、とても助かります。

 

1~50文字までのCharacterと、51~1000文字までのCharacterを、それぞれ一気に処理することはできるのでしょうか?

 

 

AppleScriptの参照のように

 

set properties of text from character A to character B to {color:RED,size:S}

 

などのように

 

●●~●●の範囲の属性を一度に与えるというやり方をご存じのかた、アドバイスよろしくお願いいたします。

  • Currently Being Moderated
    Community Member
    Aug 29, 2010 8:28 PM

    var sel = app.selection[0];
    sel.characters.itemByRange(0,49).horizontalScale = 90;
    sel.characters.itemByRange(50,999).horizontalScale = 80;

    でどうでしょうか

    |
    Mark as:
  • Currently Being Moderated
    Community Member
    Aug 29, 2010 9:27 PM

    milligrammeさんの回答に、

     

    >AppleScriptの参照のように

    >set properties of text from character A to character B to {color:RED,size:S}

     

    の部分を加えると

     

    sel.characters.itemByRange(0,49).properties = {horizontalScale:90,fillColor:RED,pointSize:S};
    sel.characters.itemByRange(50,999).properties = {horizontalScale:80,fillColor:RED,pointSize:S};

     

    という形になるでしょうか。

    |
    Mark as:

More Like This

  • Retrieving data ...

Bookmarked By (0)

Legend

  • Correct Answers - 10 points
  • Helpful Answers - 5 points