How to Return an Array of Selected Frames JSFL
Hello! I'm new to scripting so bear with me. I've written a script (with help from ChatGPT) that loops through the frames on the selected layer and exports any frame with contents as a png with the name of the frame it's from. All I want to do is modify the script to loop through a user selection of the timeline, but I can't seem to work out how to return or make an array of selected frames. I know this must be possible because many built in commands run based on selected frames...
In case it's helpful here is the existing script and my current best guess at general timeline selection.
var dom = fl.getDocumentDOM();
var timeline = dom.getTimeline();
function exportPng() {
var curLayer = timeline.currentLayer
var layerArray = timeline.layers[curLayer].frames
var folderURL = fl.browseForFolderURL("save", "Select export location", "folder");
if (folderURL) {
for (var i = 0; i < layerArray.length; i++) {
timeline.currentFrame = i;
var curFrame = timeline.currentFrame;
if (layerArray[i].isEmpty) {
continue;
} else {
var numName = "0000"
if (curFrame < 9) {
numName = "000" + (curFrame + 1);
} else if (curFrame < 99 && curFrame >= 9) {
numName = "00" + (curFrame + 1);
} else if (curFrame < 999 && curFrame >= 99) {
numName = "0" + (curFrame + 1);
} else {
numName = curFrame + 1;
}
dom.exportPNG([folderURL + "/" + numName + ".png"], true, true);
}
}
}
}
exportPng();var dom = fl.getDocumentDOM();
if (dom) {
var timeline = dom.getTimeline();
var selectedFrames = [];
// Iterate through all layers in the timeline
for (var i = 0; i < timeline.layers.length; i++) {
var layer = timeline.layers[i];
// Iterate through all frames in the layer
for (var j = 0; j < layer.frames.length; j++) {
var frame = layer.frames[j];
// Check if the frame is selected
if (frame.selected) {
selectedFrames[j] = frame;
}
}
}
// retrieve frame numbers:
var selectedFrameNumbers = [];
for (var i = 0; i < selectedFrames.length; i++) {
selectedFrameNumbers[i] = selectedFrames[i].frameIndex;
}
// Print the selected frame numbers
fl.trace("Selected Frame Numbers: " + selectedFrameNumbers.join(", "));
} else {
fl.trace("No active document.");
}
