Javascript 如何在InDesign中设置(textFrame)pageItem,以便在页面中手动更改后从母版页更新位置/大小?

Javascript 如何在InDesign中设置(textFrame)pageItem,以便在页面中手动更改后从母版页更新位置/大小?,javascript,adobe-indesign,Javascript,Adobe Indesign,我有一个脚本可以执行以下操作: var document = app.documents.item(0); var layer = document.layers.itemByName("Normal"); var allTextFrames = toArray(layer.textFrames); var moved = selectWhere("moved", "label", allTextFrames)[0]; var notMoved = sel

我有一个脚本可以执行以下操作:

    var document = app.documents.item(0);
    var layer = document.layers.itemByName("Normal");
    var allTextFrames = toArray(layer.textFrames);
    var moved = selectWhere("moved", "label", allTextFrames)[0];
    var notMoved = selectWhere("notMoved", "label", allTextFrames)[0];
    var instance = selectWhere("instance", "label", allTextFrames)[0];
    $.writeln("Moved          : " + moved.geometricBounds.join(", "));
    $.writeln("Moved overr: " + moved.overriddenMasterPageItem.geometricBounds.join(", "));
    $.writeln("notMoved          : " + notMoved.geometricBounds.join(", "));
    $.writeln("notMoved overr: " + notMoved.overriddenMasterPageItem.geometricBounds.join(", "));



    var overr = moved.overriddenMasterPageItem;
    moved.geometricBounds = [moved.overriddenMasterPageItem.geometricBounds[0] 
                                            ,moved.overriddenMasterPageItem.geometricBounds[1]
                                            ,moved.overriddenMasterPageItem.geometricBounds[2]
                                            ,moved.overriddenMasterPageItem.geometricBounds[3]];
    moved.visibleBounds =      [moved.overriddenMasterPageItem.visibleBounds[0] 
                                            ,moved.overriddenMasterPageItem.visibleBounds[1]
                                            ,moved.overriddenMasterPageItem.visibleBounds[2]
                                            ,moved.overriddenMasterPageItem.visibleBounds[3]];
但是如果我在母版页中更改文本框,它不会更新“移动的”文本框

例如,pageItem有一个属性,当设置为“-1”时,它将使用母版页值。我一直在寻找这样的东西,但位置和大小

fillTint number readonly页面项填充颜色中使用的色调百分比。(若要指定着色百分比,请使用0到100之间的数字;若要使用继承的或替代的值,请使用-1。)
src:

我不会标记为anwser,因为有时不起作用

下面是将删除文本框并还原的脚本。然后它向它提供旧文本框的数据。它还将文本框链接到上一个和下一个文本框

如何使用:

  • 创建脚本并粘贴以下内容
  • 选择移动的文本框并运行脚本
  • 完成

    #target "indesign"
    #targetengine "mySessionX"
    var SCRIPT_NAME = "Restore moved text frames";
    try{
    app.doScript(main, ScriptLanguage.JAVASCRIPT, undefined, UndoModes.ENTIRE_SCRIPT, SCRIPT_NAME);
    }catch(e){
        alert(e);
    }
    
    function main(){
        removeOverrides(app.selection[0]);
    }
    
    function removeOverrides(textFrame){
        if(textFrame.constructor.name != "TextFrame"){
            throw new Error("No text frame selected");
        }
        // save data
        var contents = textFrame.contents;
        var contentType = textFrame.contentType;
        var nextTextFrame = textFrame.nextTextFrame;
        var previousTextFrame = textFrame.previousTextFrame;
        var masterPageTextFrame = textFrame.overriddenMasterPageItem;
        var page = textFrame.parentPage;
        if(nextTextFrame){
            nextTextFrame.previousTextFrame = null;
        }
        if(previousTextFrame){
            previousTextFrame.nextTextFrame = null;
        }
    
        // remove overrides
        textFrame.removeOverride();
    
        // restore state
        var newTextFrame = masterPageTextFrame.override(page);
        newTextFrame.contents = contents;
        newTextFrame.contentType = contentType;
    
        // update right and left
        if(nextTextFrame){
            nextTextFrame.previousTextFrame = newTextFrame
        }
        if(previousTextFrame){
            previousTextFrame.nextTextFrame = newTextFrame
        }
    
    
        newTextFrame.recompose();
        alert("Restored");
    }