在JavaScript InDesign脚本中循环遍历所有线程文本框架?

时间:2012-05-08 15:12:58

标签: javascript scripting automation adobe-indesign

我正在尝试创建一个与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的脚本文档中找到 - 但也许我不是在寻找正确的地方)。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:2)

这是一个非常简单的脚本,它允许您循环遍历文档中的所有textFrame,然后使用线程文本框执行任何操作。基本上,如果任何给定的textFrame具有textFramenextTextFrame的{​​{1}}对象,您就知道它已经过线程化了。

previousTextFrame

希望这会有所帮助!!