Exit
  • Global community
    • Language:
      • Deutsch
      • English
      • Español
      • Français
      • Português
  • 日本語コミュニティ
  • 한국 커뮤니티
0

Setting FN settings across multiple files

Contributor ,
Aug 06, 2025 Aug 06, 2025

Is there a way to set FN settings across multiple files or all the files in a book? There certain things that synching styles will not cover.

Thanks

SF

TOPICS
Scripting , Type
169
Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines

correct answers 1 Correct answer

Community Expert , Aug 25, 2025 Aug 25, 2025

Hi @SuzzyFlamingo it's actually pretty easy via a script, and I have just written one. See if it works for you.

- Mark

 

/**
 * @file Synchonize Footnote Options.js
 *
 * Synchronizes all open documents to match the active document.
 *
 * @author m1b
 * @version 2025-08-26
 * @discussion https://community.adobe.com/t5/indesign-discussions/setting-fn-settings-across-multiple-files/m-p/15474862
 */
function main() {

    var settings = {
        doc: app.activeDocument,
        activeDocumentID: a
...
Translate
Community Expert ,
Aug 25, 2025 Aug 25, 2025

Book synchronization does not include Footnote settings. You would have to set them manually in each document unless you planned ahead and made a .INDT template file as the basis for all the documents.

Mike Witherell
Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Aug 25, 2025 Aug 25, 2025

But you can include FN settings in the object styles. You can synchronize object styles.

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Aug 25, 2025 Aug 25, 2025
LATEST

Hi @SuzzyFlamingo it's actually pretty easy via a script, and I have just written one. See if it works for you.

- Mark

 

/**
 * @file Synchonize Footnote Options.js
 *
 * Synchronizes all open documents to match the active document.
 *
 * @author m1b
 * @version 2025-08-26
 * @discussion https://community.adobe.com/t5/indesign-discussions/setting-fn-settings-across-multiple-files/m-p/15474862
 */
function main() {

    var settings = {
        doc: app.activeDocument,
        activeDocumentID: app.activeDocument.fullName,
        docIDs: undefined,
        synchType: 'footnoteOptions',
        showUI: true,
    };

    settings.docIDs = getProperties(app.documents, 'fullName');

    if (settings.showUI) {

        var result = ui(settings);

        if (2 === result)
            // user cancelled
            return;

    }

    if (!app.activeDocument.hasOwnProperty(settings.synchType))
        throw new Error('Synchronize failed: bad `synchType` (' + settings.synchType + ')');

    var activeSynchOptions = app.activeDocument[settings.synchType].properties;

    for (var i = 0, doc; i < settings.docIDs.length; i++) {

        doc = getDocumentByPath(app.documents, settings.docIDs[i]);

        app.activeDocument = doc;

        doc[settings.synchType].properties = activeSynchOptions;

    }

    app.activeDocument = getDocumentByPath(app.documents, settings.activeDocumentID);

};
app.doScript(main, ScriptLanguage.JAVASCRIPT, undefined, UndoModes.ENTIRE_SCRIPT, 'Synchronize Options');

/**
 * Returns a document with matching path.
 * @author m1b
 * @version 2024-04-21
 * @param {Array<Document>|Documents} docs - the documents to look through.
 * @param {File|String} [path] - the path to search for.
 * @returns {Document?} - the Document, if found.
 */
function getDocumentByPath(docs, path) {

    path = String(path);

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

        if (
            docs[i].saved
            && path === String(docs[i].fullName)
        )
            return docs[i];

    }

};

/**
 * Returns a property of each object.
 * @author m1b
 * @version 2023-09-08
 * @param {Array|Collection} things - the things to look through.
 * @param {String} key - the property name.
 * @param {*} value - the value to match.
 * @returns {Array<*>}
 */
function getProperties(things, key) {

    var found = [];

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

        try {
            if (things[i].hasOwnProperty(key))
                found.push(things[i][key]);
        } catch (_) { }

    }

    if (found.length > 0)
        return found;

};

/**
 * Shows UI for Synchronize Footnotes/Endnotes script.
 * @param {Object} settings - the settings to adjust.
 * @returns {1|2} - result code
 */
function ui(settings) {

    var w = new Window("dialog", 'Synchronize Footnotes/Endnotes', undefined, { closeButton: false }),

        // radio button
        sycnhTypeGroup = w.add('group {orientation:"row", alignment:["fill","center"], alignChildren:["left","center"], margins:[20,20,20,20] }'),
        marginGroup = sycnhTypeGroup.add('group {orientation:"row", alignment:["center","center"], margins:[0,0,0,5]}'),
        sortPreferenceLabel = marginGroup.add('statictext { text:"Synchronize All Open Documents:", alignment:["left","center"] }'),
        footnotesRadio = sycnhTypeGroup.add('radiobutton {text:"Footnotes"}'),
        endnotesRadio = sycnhTypeGroup.add('radiobutton {text:"Endnotes"}'),

        // buttons
        bottomUI = w.add("group {orientation:'row', alignment:['fill','top'], margins: [0,0,0,0] }"),
        buttons = bottomUI.add("group {orientation:'row', alignment:['right','top'], alignChildren:'right' }"),
        cancelButton = buttons.add('button', undefined, 'Cancel', { name: 'cancel' }),
        synchButton = buttons.add('button', undefined, 'Synchronize', { name: 'ok' });

    // initialize
    footnotesRadio.value = 'footnoteOptions' === settings.synchType;
    endnotesRadio.value = 'endnoteOptions' === settings.synchType;

    // event handling
    synchButton.onClick = function () {
        settings.synchType = footnotesRadio.value ? 'footnoteOptions' : 'endnoteOptions';
        w.close(1);
    };

    w.center();
    return w.show();

};

 

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines