I'm having a similar problem when it comes to breakApart(), except in my case its for bitmaps that have already been broken by hand. I've been attempting to use a try catch statement and have also found that it does not work. Doesn't seem like anyone knows the answers to the problem. Guess I'm doomed.
I found a solution to the 'breakApart() not available'. You have to explicitly lock all other layers other than the one you want, and explicitly select the frame:
use a utility function like 'lockAllLayers' to lock all layers
var tl = fl.getDocumentDOM().getTimeline();
tl.layers[i].locked = isLocked;
unlock the one you need
tl.layers[i].locked = false;
explicilty select the layer and frame you want:
timeline.currentLayer = 2;
timeline.currentFrame = 3;
only THEN can you actual set the element you want to select, or use document.selectAll()
You can check if breakApart() is available by using an if statement like
if(document.selection && document.selection.elementType == "<whatever you're looking for here>")
Hope you managed to understand that!