Skip to main content
Inspiring
July 13, 2023
Question

Make script work across multiple docs

  • July 13, 2023
  • 3 replies
  • 1302 views

Hey guys,

Could you please modify the script below to make it work across multiple docs? There are actually two scripts in this code (the second one starts at "function main() {" line). Would it be possible to merge them, so that it work in one go?

function main() {

    var doc = app.activeDocument;

    app.findGrepPreferences = NothingEnum.NOTHING;
    app.changeGrepPreferences = NothingEnum.NOTHING;

    app.findGrepPreferences.pointSize = "6.5";
    app.findGrepPreferences.tracking = 0;
    app.findGrepPreferences.fillColor=app.swatches.item("Paper");
    
    var found = doc.findGrep();

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

        for (var j = 0; j < found[i].parentTextFrames.length; j++) {

            var frame = found[i].parentTextFrames[j];

            if (frame.isValid) {
                frame.textFramePreferences.autoSizingReferencePoint = AutoSizingReferenceEnum.CENTER_POINT;
                frame.textFramePreferences.autoSizingType = AutoSizingTypeEnum.WIDTH_ONLY;
            }

        }

}; 

app.doScript(main, ScriptLanguage.JAVASCRIPT, undefined, UndoModes.ENTIRE_SCRIPT, 'Set Autosizing');

function main() {

    var doc = app.activeDocument;

    app.findGrepPreferences = NothingEnum.NOTHING;
    app.changeGrepPreferences = NothingEnum.NOTHING;

    app.findGrepPreferences.pointSize = "8.5";
    app.findGrepPreferences.leading = "11";
    
    var found = doc.findGrep();

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

        for (var j = 0; j < found[i].parentTextFrames.length; j++) {

            var frame = found[i].parentTextFrames[j];

            if (frame.isValid) {
                frame.textFramePreferences.autoSizingReferencePoint = AutoSizingReferenceEnum.LEFT_CENTER_POINT;
                frame.textFramePreferences.autoSizingType = AutoSizingTypeEnum.WIDTH_ONLY;
            }

        }

}; 

app.doScript(main, ScriptLanguage.JAVASCRIPT, undefined, UndoModes.ENTIRE_SCRIPT, 'Set Autosizing');

 
Thanks in advace,
Rogerio

This topic has been closed for replies.

3 replies

Peter Kahrel
Community Expert
Community Expert
July 14, 2023

You should create an object style and use a script to apply it to your objects. Then all you need to do is change the style.

Community Expert
July 14, 2023

For the first two try the following code

 

 

function setAutoSizing(txtList){
    for (var i = 0; i < txtList.length; i++){
        for (var j = 0; j < txtList[i].parentTextFrames.length; j++) {
            var frame = txtList[i].parentTextFrames[j];
            if (frame.isValid) {
                frame.textFramePreferences.autoSizingReferencePoint = AutoSizingReferenceEnum.CENTER_POINT;
                frame.textFramePreferences.autoSizingType = AutoSizingTypeEnum.WIDTH_ONLY;
            }
        }
    }
}

function main() {
    for (var i = 0; i < app.documents.length; i++) {
        var doc = app.documents[i]
        app.findGrepPreferences = NothingEnum.NOTHING;
        app.findGrepPreferences.pointSize = "6.5";
        app.findGrepPreferences.tracking = 0;
        app.findGrepPreferences.fillColor=app.swatches.item("Paper");
        var found = doc.findGrep();
        setAutoSizing(found)

        app.findGrepPreferences = NothingEnum.NOTHING;
        app.findGrepPreferences.pointSize = "8.5";
        app.findGrepPreferences.leading = "11";
        found = doc.findGrep();
        setAutoSizing(found)
        app.findGrepPreferences = NothingEnum.NOTHING;  
    }
}
app.doScript(main, ScriptLanguage.JAVASCRIPT, undefined, UndoModes.ENTIRE_SCRIPT, 'Set Autosizing');

 

 

-Manan

-Manan
Inspiring
July 14, 2023

This one worked just as expected! Thx! 🙂

Inspiring
July 13, 2023

This one as well pls (same request). Thx!

function main() {

   var doc = app.activeDocument;    
    
    app.findChangeObjectOptions.objectType = ObjectTypes.TEXT_FRAMES_TYPE;
    app.findObjectPreferences = NothingEnum.NOTHING;
    
    app.changeObjectPreferences.insetSpacing = [ 8,10,8,10 ];
    app.findObjectPreferences.insetSpacing = [ 8,10,8,10 ];

    var found = doc.findObject();

    for (var i = 0; i < found.length; i++)
        found[i].texts[0].alignToBaseline = false;

};

app.doScript(main, ScriptLanguage.JAVASCRIPT, undefined, UndoModes.ENTIRE_SCRIPT, 'Unapply Baseline Grid To Target Frames');


function main() {

   var doc = app.activeDocument;    
    
    app.findChangeObjectOptions.objectType = ObjectTypes.TEXT_FRAMES_TYPE;
    app.findObjectPreferences = NothingEnum.NOTHING;
    
    app.changeObjectPreferences.insetSpacing = [ 5,5,5,5 ];
    app.findObjectPreferences.insetSpacing = [ 5,5,5,5 ];

    var found = doc.findObject();

    for (var i = 0; i < found.length; i++)
        found[i].texts[0].alignToBaseline = false;
};

app.doScript(main, ScriptLanguage.JAVASCRIPT, undefined, UndoModes.ENTIRE_SCRIPT, 'Unapply Baseline Grid To Target Frames');
  

 

Community Expert
July 14, 2023

For the next two, try the following

function setBaseLine(txtList){
    for (var i = 0; i < txtList.length; i++)
        txtList[i].texts[0].alignToBaseline = false;
}

function main() {
    for (var i = 0; i < app.documents.length; i++) {
        var doc = app.documents[i]
        app.findChangeObjectOptions = NothingEnum.NOTHING;
        app.findObjectPreferences = NothingEnum.NOTHING;
        app.changeObjectPreferences = NothingEnum.NOTHING;

        app.findChangeObjectOptions.objectType = ObjectTypes.TEXT_FRAMES_TYPE;
        app.changeObjectPreferences.insetSpacing = [ 8,10,8,10 ];
        app.findObjectPreferences.insetSpacing = [ 8,10,8,10 ];
        
        var found = doc.findObject();
        setBaseLine(found)

        app.findChangeObjectOptions = NothingEnum.NOTHING;
        app.findObjectPreferences = NothingEnum.NOTHING;
        app.changeObjectPreferences = NothingEnum.NOTHING;

        app.findChangeObjectOptions.objectType = ObjectTypes.TEXT_FRAMES_TYPE;
        app.changeObjectPreferences.insetSpacing = [ 5,5,5,5 ];
        app.findObjectPreferences.insetSpacing = [ 5,5,5,5 ];

        var found = doc.findObject();
        setBaseLine(found)
    }

    app.findChangeObjectOptions = NothingEnum.NOTHING;
    app.findObjectPreferences = NothingEnum.NOTHING;
    app.changeObjectPreferences = NothingEnum.NOTHING;
};

app.doScript(main, ScriptLanguage.JAVASCRIPT, undefined, UndoModes.ENTIRE_SCRIPT, 'Unapply Baseline Grid To Target Frames');

-Manan

 

-Manan
Inspiring
July 14, 2023

Hi @Manan Joshi, thanks for the help! 🙂

I tested the above script, but not luck - it doesn't work across multiple documents.
I'm attaching two indd files here. Could you please give them a try?

Thanks,
Rogerio