1

私は経験豊富なJavaScriptプログラマーであり、現在多くの作業を必要とするプロジェクトに取り組んでいます。InDesignのスクリプトを使用してプロセスを自動化できることを望んでいます。

基本的に、これが私がやりたいことです。5桁(まれに4桁)の文字列があります。次に、数字の最後の桁に応じて、見本を適用するテキストフレームの下に3つの長方形があります。0〜9の数字には特定の色(および見本)が割り当てられています。現時点では、各長方形を手動で調べ、最後の2桁に従って選択し、選択したすべての長方形に見本を適用しています。

InDesignのユーザースクリプトを使用してプロセスを自動化できるはずだと確信していますが、これについてはよく理解していません。特別なバーコードに色がどのように割り当てられるかの例を次に示します。

0=赤1=青2=緑...。

したがって、次のコードの場合:12312、下のバーの色を次のようにします。

ブルーレッドブルー

(つまり、上と下の行=最後から2番目の桁、中央の行=最後の桁)。

ドキュメント内のページをループし、コードを見つけ、最後の2桁を抽出し、数に応じて長方形オブジェクトに見本を適用するスクリプトを作成する方法を誰かに教えてもらえますか...

私は通常のJavaScriptとHTMLを使用してこのようなものを書くことができると確信していますが、そうは言っても、私はHTMLのDOMに精通しています...

どんな助けやポインタもありがたいことに受け取られるでしょう!

4

1 に答える 1

3

これは、私がすぐに入力したスクリプトの例です。あなたはそれを微調整する必要があるかもしれませんが、私はそれがあなたが要求しているものをカバーしていると思います。

test();
function test(){

    //Open your document:
    var myDoc = app.open('c:/users/user/desktop/test.indd');

    //Get all groups for this document:
    var myGroups = myDoc.groups;

    //Get all swatches for this document:
    var mySwatches = myDoc.swatches;

    //Loop through all of your groups:
    for (var i = 0; i < myGroups.length; i++){

        //for each group we need to get the code from the text frame,
        //so get the text frame first:
        var myTextFrame = myGroups[i].textFrames[0];

        //Now get the color code from the text frame:
        var myColorCode = myTextFrame.contents;

        //get the rectangle from this group:
        var myRect = myGroups[i].rectangles[0];

        //here you would want to parse out whichever digits you need from myColorCode

        //use the code to determine which swatch to use, loop through the swatches:
        for(var s = 0; s < mySwatches.length; s++){

                //find it:
                var mySwatch = mySwatches[s];

                //apply this swatch to your rectangle, and leave the loop:
                myRect.fillColor = mySwatch;
                break;
        }

    }


}

これがお役に立てば幸いです。役立つはずのAdobeからの直接のスクリプトリファレンスを次に示します。上記の例についてご不明な点がございましたら、お気軽にお問い合わせください。

于 2011-05-04T18:03:57.880 に答える