// ISO_RenameOnlyNestedComps.jsx // Artist: https://www.jasonfletcher.info/ // Code generated by GPT-5.6 Luna // Date: September 20, 2026 // Description: This After Effects script adds a user-defined suffix to the names of any comps nested within the comps selected in the Project window. (function () { var undoGroupStarted = false; try { // ------------------------------------------------------------ // Validate Project // ------------------------------------------------------------ if (app.project === null) { alert("No After Effects project is currently open."); return; } // ------------------------------------------------------------ // Gather selected compositions from the Project window // ------------------------------------------------------------ var selectedItems = app.project.selection; var selectedComps = []; var i; var j; for (i = 0; i < selectedItems.length; i++) { if (selectedItems[i] !== null && selectedItems[i] instanceof CompItem) { selectedComps[selectedComps.length] = selectedItems[i]; } } if (selectedComps.length === 0) { alert("Please select one or more compositions in the Project window."); return; } // ------------------------------------------------------------ // Prompt for suffix // ------------------------------------------------------------ var userName = prompt( "Enter the name to append to nested compositions:", "" ); if (userName === null) { return; } if (userName === "") { alert("No name was entered. The operation was cancelled."); return; } // ------------------------------------------------------------ // Begin undo group // ------------------------------------------------------------ app.beginUndoGroup("Rename Nested Comps"); undoGroupStarted = true; // ------------------------------------------------------------ // Track nested comps that have already been renamed. // // We use an array and manual comparison rather than indexOf() // to maintain ECMAScript 3 compatibility. // ------------------------------------------------------------ var renamedComps = []; var compsProcessed = 0; var nestedInstancesFound = 0; // ------------------------------------------------------------ // Examine each selected composition // ------------------------------------------------------------ for (i = 0; i < selectedComps.length; i++) { var parentComp = selectedComps[i]; if (parentComp === null) { continue; } compsProcessed++; // Examine every layer in the selected composition. for (j = 1; j <= parentComp.numLayers; j++) { var layer = parentComp.layer(j); if (layer === null) { continue; } // Check whether this layer is a nested composition. var nestedComp = null; if (layer.source !== null && layer.source instanceof CompItem) { nestedComp = layer.source; } if (nestedComp === null) { continue; } nestedInstancesFound++; // ---------------------------------------------------- // Determine whether this nested comp has already been // processed. // ---------------------------------------------------- var alreadyRenamed = false; var k; for (k = 0; k < renamedComps.length; k++) { if (renamedComps[k] === nestedComp) { alreadyRenamed = true; break; } } if (alreadyRenamed) { continue; } // ---------------------------------------------------- // Rename the nested composition. // ---------------------------------------------------- nestedComp.name = nestedComp.name + "_" + userName; renamedComps[renamedComps.length] = nestedComp; } } // ------------------------------------------------------------ // Feedback // ------------------------------------------------------------ alert( "Rename Nested Comps complete.\n\n" + "Suffix: _" + userName + "\n" + "Selected comps examined: " + compsProcessed + "\n" + "Nested comp instances found: " + nestedInstancesFound + "\n" + "Nested comps renamed: " + renamedComps.length ); } catch (error) { alert( "An error occurred while renaming nested compositions.\n\n" + "Error: " + error.toString() ); } finally { if (undoGroupStarted) { app.endUndoGroup(); } } })();