Skip to content

Instantly share code, notes, and snippets.

@bomberstudios
Created February 26, 2014 09:42
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save bomberstudios/9226676 to your computer and use it in GitHub Desktop.
Save bomberstudios/9226676 to your computer and use it in GitHub Desktop.
Sketch: Copy layer list to clipboard
// Copy Layer List to Clipboard
// Change this variables to configure the script:
var COPY_LAYER_TYPE = false,
TRAVERSE_GROUPS = true
var layers = [[doc currentPage] layers],
loop = [layers objectEnumerator],
layer_tree = "",
layer_depth = 0
function copy_text(txt){
var pasteBoard = [NSPasteboard generalPasteboard]
[pasteBoard declareTypes:[NSArray arrayWithObject:NSPasteboardTypeString] owner:nil]
[pasteBoard setString:txt forType:NSPasteboardTypeString]
}
function is_group(layer) {
return [layer isMemberOfClass:[MSLayerGroup class]] || [layer isMemberOfClass:[MSArtboardGroup class]]
}
function process_layer(layer){
log("processing layer " + layer + " at depth " + layer_depth)
if (COPY_LAYER_TYPE) {
layer_tree += [layer class] + ": "
}
layer_tree += [layer name]
layer_tree += "\n"
if(is_group(layer) && TRAVERSE_GROUPS){
// we have a group, so go inside it:
var sublayers = [[layer layers] objectEnumerator]
while (sublayer = sublayers.nextObject()) {
layer_depth++
process_layer(sublayer)
}
}
}
while (layer = loop.nextObject()) {
process_layer(layer)
}
copy_text(layer_tree)
@marekhrabe
Copy link

This didn't work for me in 3.0.1, so I made a few chages in loops 😉

-    loop = [layers objectEnumerator],
+    layers_array = [layers array],
-    var sublayers = [[layer layers] objectEnumerator]
-    while (sublayer = sublayers.nextObject()) {
-      layer_depth++
-      process_layer(sublayer)
-    }
+    var sublayers = [[layer layers] array]
+    for (var j = 0; j < [sublayers count]; j++) {
+      layer_depth++
+      process_layer(sublayers[j])
+  }
-while (layer = loop.nextObject()) {
-   process_layer(layer)
+for (var i = 0; i < [layers_array count]; i++) {
+   process_layer(layers_array[i]);

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment