One way to fix this code is to use a small helper function to convert a layer’s relative frame to absolute coordinates. There’s also a no-longer available setConstrainProportions API call that we might just get rid of entirely:
+// https://forum.sketch.com/t/property-absoluterect-is-removed-on-app-v97/1176
+function absoluteRectForLayer(layer) {
+ let parent = layer.parentObject();
+ let relativeRect = layer.frame().rect();
+ return parent.convertRect_toCoordinateSpace_(relativeRect, nil);
+}
var doc = context.document;
var selection = context.selection;
if (selection.count() > 0) {
var loopSelection = selection.objectEnumerator();
var layer;
while (layer = loopSelection.nextObject()) {
if (layer.class() != "MSArtboardGroup" && layer.class() != "MSSymbolMaster") {
var artboard = MSArtboardGroup.alloc().init();
artboard.setName(layer.name());
- artboard.setFrame(MSRect.alloc().initWithRect(layer.absoluteRect().rect()));
+ artboard.setFrame(MSRect.alloc().initWithRect(absoluteRectForLayer(layer)));
doc.currentPage().addLayers([artboard]);
- artboard.frame().setConstrainProportions(false);
layer.moveToLayer_beforeLayer(artboard, nil);
if (layer.class() == "MSLayerGroup") {
var layerGroup = artboard.layers().firstObject();
layerGroup.ungroup();
}
}
}
}
Thank you for posting this and welcome to the forum!
We appreciate you bringing this issue to our attention. The good news here is that we are actively exploring ways to incorporate a similar feature in future updates. As soon we have update, we are happy to let you know.