3

SplitStory.jsxとまったく同じように機能するInDesignスクリプトを作成しようとしていますが、最初にスレッド化されたテキストフレームを選択する必要はなく、ドキュメント全体でスレッド化/リンクされているすべてのものをループします。

これが私がこれまでに持っているものですが、何もしていないようです。私はスクリプティングにかなり慣れていません。

main();
function main(){
    //Make certain that user interaction (display of dialogs, etc.) is turned on.
    app.scriptPreferences.userInteractionLevel = UserInteractionLevels.interactWithAll;
    if(app.documents.length != 0){
        var myDoc = app.activeDocument;
        var myStories = 0;
        for (var i = 0; myDoc.stories.length > i; i++)
            myStories = myDoc.stories[i];
            mySplitStory(myStories);
            myRemoveFrames(myStories);
    }
    else{
        alert("Please open a document and try again.");
    }
}
function mySplitStory(myStory){
    var myTextFrame;
    //Duplicate each text frame in the story.
    for(var myCounter = myStory.textContainers.length-1; myCounter >= 0; myCounter --){
        myTextFrame = myStory.textContainers[myCounter];
        myTextFrame.duplicate();
    }
}
function myRemoveFrames(myStory){
    //Remove each text frame in the story. Iterate backwards to avoid invalid references.
    for(var myCounter = myStory.textContainers.length-1; myCounter >= 0; myCounter --){
        myStory.textContainers[myCounter].remove();
    }
}

mySplitStory(myStories);好きなものを追加する必要があるように感じmySplitStory(myStories.currentStory);ますが、これについては特にオンラインで(またはAdobeのスクリプトドキュメントで)何も見つかりません。ただし、適切な場所を探していない可能性があります。

どんな助けでも大歓迎です!

4

1 に答える 1

2

これは、ドキュメント内のすべてのtextFrameをループして、スレッド化されたテキストフレームで必要なことをすべて実行できる非常に単純なスクリプトです。基本的に、特定のtextFrameにtextFrameオブジェクトがある場合、nextTextFrameまたはpreviousTextFrameスレッド化されていることがわかっている場合。

test();
function test(){

    var myDoc = app.open('c:/123.indd');

    //get all textframes:
    var allTextFrames = myDoc.textFrames;

    for(var i=0;i<allTextFrames.length;i++){
        var tf = allTextFrames[i];

        if(tf.nextTextFrame != null || tf.previousTextFrame != null){

           //text frame is threaded, do work:
        }
    }
}

お役に立てれば!!

于 2012-05-11T20:06:51.010 に答える