Indesign 脚本:循环所有段落(包括溢流)

Indesign Script: Looping ALL paragraphs (including in overset)

正在查找所选 TextFrame 中所有段落的选择器,包括溢流中的“不可见段落”。脚本已经在运行并循环显示可见段落:

[...]

if(app.selection[0].constructor.name=="TextFrame") {

    var myParagraphs = app.selection[0].paragraphs;     // only visible ones?!
    var myArray = myParagraphs.everyItem().contents;

    for (var i=0; i<myArray.length; i++) {

        // do some fancy styling - WORKING
        myParagraphs[i].appliedParagraphStyle = app.activeDocument.paragraphStyles.item('Format XYZ');
    }
}
当我为 TextFrame 设置另一个高度时,

myArray.length 发生变化。但是我怎样才能处理所有段落呢?已经用相同的结果测试了 .anyItem() :(

好吧,overset 中的段落不是文本框架的段落,因此在您的脚本中跳过它们是有道理的。要访问文本框架的所有段落 + 溢流部分中的段落,您需要访问父故事的所有段落(故事是描述链接文本框架和溢流文本中所有文本的文本实体)文本框。

您可以这样做:

if(app.selection[0].constructor.name === "TextFrame") {
  var myParagraphs = app.selection[0].parentStory.paragraphs;

  for (var i = 0; i < myParagraphs.length; i++) {
    myParagraphs[i].appliedParagraphStyle = app.activeDocument.paragraphStyles.item("Format XYZ");
  }
}

请注意,这将处理链接到您的文本框架的所有文本框架中的所有段落,以防万一。

此外,由于看起来您需要对整个故事的每个段落应用段落样式,所以您还不如直接将段落样式应用到整个故事而不是循环段落:

app.selection[0].parentStory.appliedParagraphStyle = app.activeDocument.paragraphStyles.item("Format XYZ");