Skip to main content
Byron Nash - INSP
Inspiring
September 8, 2022
Question

Change render location function not working

  • September 8, 2022
  • 1 reply
  • 265 views

I have this function to change the render locations on the items in the queue. I can't get it to work however. I'm getting the file path either from the preferences or by asking the user to choose a new location before this function is run. My script does not seem to trigger the function because I don't see the alert dialogs that I have in there. 

function ChangeRenderLocations(newLocation) {
    var newLocation = Folder.selectDialog("Select a render output folder...");
    alert("changing render location to: " + newLocation);

    if (newLocation != null) {

        // Process all render queue items whose status is set to Queued.
        for (var i = 1; i <= app.project.renderQueue.numItems; ++i) {
            var curItem = app.project.renderQueue.item(i);

            //if (curItem.status == RQItemStatus.QUEUED) {
                // Change all output modules for the current render queue item.
                for (var j = 1; j <= curItem.numOutputModules; ++j) {
                    var curOM = curItem.outputModule(j);

                    var oldLocation = curOM.file;
                    curOM.file = new File(newLocation.fsName + "/" + curItem.comp.name);

                    alert("New output path:\n" + curOM.file.fsName, scriptName);
                }
            //}
        }

    } else {
        var newLocation = Folder.selectDialog("Select a render output folder...");
    }
}

 

This function is triggered by this portion of my script:

    var renderFolder = new Folder(myScriptPal.grp.groupOne.groupSettings.btn_resetOutput.helpTip);
    consoleLog("Finished building, now wrapping up...");

    //change render locations
    if (renderFolder != null) {
        consoleLog("Render folder checked out, setting render queue up now.")
        ChangeRenderLocations(renderFolder)
    } else {
        consoleLog("Render folder did not check out. Asking the user for a new one.")
        var newLocation = Folder.selectDialog("Select a render output folder...");
        ChangeRenderLocations(newLocation);
    }
This topic has been closed for replies.

1 reply

Justin Taylor-Hyper Brew
Community Expert
Community Expert
January 30, 2023

You'll want to break this down piece by piece to find the issue when debugging.

 

Only issue I could find was your alert trying ton add a string and a File which isn't always relibale without first converting the file to a string or getting the fsname. Also your variable scriptName was undefined.

 

This seems to work:

 

    var newLocation = Folder.selectDialog("Select a render output folder...");
    alert("changing render location to: " + newLocation.fsName);
    if (newLocation != null) {
        for (var i = 1; i <= app.project.renderQueue.numItems; ++i) {
            var curItem = app.project.renderQueue.item(i);
                for (var j = 1; j <= curItem.numOutputModules; ++j) {
                    var curOM = curItem.outputModule(j);

                    var oldLocation = curOM.file;
                    curOM.file = new File(newLocation.fsName + "/" + curItem.comp.name);

                    alert("New output path:\n" + curOM.file.fsName, 'scriptName');
                }
        }

    } else {
        var newLocation = Folder.selectDialog("Select a render output folder...");
    }