如何在 Indesign 中更改文本框的创建顺序

How to change textframe creation order in Indesign

我正在为 Indesign 编写脚本。在该脚本中,我获取文本框的内容并将它们保存到数据库中。到这里我的脚本起作用了。但是,当在文本框架之间循环时,脚本使用创建顺序。我想按问题顺序保存到数据库。

这是我的脚本:

var myDocument = app.activeDocument;var frameList = myDocument.textFrames;
for (var i = 0; i < frameList.length; i++){ 
    var txt=frameList[i].contents;
    SaveToDB(txt);
}

那么有没有办法改变文本框的创建顺序

简短的回答是——看起来不可能。文本框按创建顺序添加到 textFrames 中,并且没有移动它们的方法。 textFrame 对象具有索引 属性,但它是只读的。

您可以按问题顺序创建文本框架。

另一种方法是在保存到数据库之前对数组进行排序。我认为,您需要使用多维数组并在那里生成排序顺序。您可以尝试从文本框中抓取一些第一个字符,因为它似乎代表问题编号。另一种方法是添加脚本标签作为排序顺序。

最后,让数据库对它们进行排序。您在数据库中存储记录的顺序通常并不重要,因为数据库查询无论如何都会添加排序

是的,有一种方法可以更改 "creation order",您只需在“图层”面板中重新排列文本框即可。堆栈中最低位置的文本框将被视为最先创建的,而最高位置的文本框将被视为最后创建的。

但是,我不知道如何通过脚本更改此堆栈顺序(如果有人知道,我会很想听听)。

因此您的选择是在图层面板中手动重新排列此堆栈顺序,然后 运行 您的脚本或按问题编号对其进行排序(如 Jongware 在 StackExchange GraphicDesign 中所建议的那样)。