InDesign Server CS6 脚本 - 获取包含 DataMergeField 的 TextFrame

InDesign Server CS6 Scripting - Get TextFrame containing DataMergeField

我无法确定 DataMergeField 是否包含在 TextFrame 中。

var document = app.open('template.indd');
var dataMerge = document.dataMergeProperties;
var field;
for (field in document.dataMergeTextPlaceholders) {
    var story = field.parentStory;
    var content = story.contents;
    var textFrame = story.textFrames.item(0);
    //textFrame is null
}
//....

我正在尝试为任何 DataMergeFields 的文本内容提供环绕、适合、填充选项,并根据 TextFrame 尺寸调整它们。不知道文档中使用的任何 DataMergeFields 或 TextFrames 属性。

像这样的东西应该在 JS 中工作:

var document = app.open('template.indd');
var hs = document.dataMergeTextPlaceholders;
var n = hs.length, h, tf;
while (n--) {
  h = hs[n];
  if ( h.storyOffset.parentTextFrames.length ) {
    tf = h.storyOffset.parentTextFrames[0]; 
    //do something with tf
   }
}

我能够让它与以下内容一起使用。我猜测使用 document 而不是 app.documents.item(0) 是问题所在。

app.open('template.indd');
var phs = app.documents.item(0).dataMergeTextPlaceholders;
var i, textFrame, ph, story;
for (i = 0; i < phs.length; i++) {
    ph = phs.item(i);
    if (ph instanceof DataMergeTextPlaceholder) {
        story = ph.parentStory;
        if (story.textFrames.length > 0) {
            textFrame = story.textFrames.item(0);
            //...
        }
    }
}