Skip to content

Instantly share code, notes, and snippets.

@sonburn
sonburn / selectSymbolInstanceLayersByName.js
Created November 18, 2022 17:20
Select symbol instance layers by name
const sketch = require("sketch")
const util = require("util")
const document = sketch.getSelectedDocument()
const documentData = document.sketchObject.documentData()
const selections = document.selectedLayers
const selection = selections.layers[0]
let layerName = 'Oval'
let instanceOverrides = util.toArray(selection.sketchObject.overrideContainer().flattenedChildren())
const sketch = require('sketch');
const document = sketch.getSelectedDocument();
const selection = document.selectedLayers;
selection.forEach(layer => layer.sketchObject.fixGeometryWithOptions(0));
const sketch = require('sketch');
const document = sketch.getSelectedDocument();
const page = document.selectedPage;
var artboards = page.sketchObject.artboards();
var duplicates = [];
artboards.forEach(function(artboard){
let match = artboards.find(a => a.name() == String(artboard.name()));
var sketch = require('sketch');
var document = sketch.getSelectedDocument();
var page = document.selectedPage;
var count = 0;
page.sketchObject.symbols().forEach(function(symbol){
var symbol = sketch.fromNative(symbol);
if (symbol.overrides) {
symbol.overrides.forEach(function(override){
var artboards = context.document.valueForKeyPath("pages.@unionOfArrays.artboards"),
artboardLoop = artboards.objectEnumerator(),
artboard;
while (artboard = artboardLoop.nextObject()) {
artboard.exportOptions().setLayerOptions(2);
}
function findStringInTextLayers(textToFind,exactMatch,currentPage) {
var predicate = NSPredicate.predicateWithFormat("className == %@","MSTextLayer"),
textLayers = NSMutableArray.array();
if (currentPage == 1) {
var page = context.document.currentPage();
textLayers.addObjectsFromArray(page.children().filteredArrayUsingPredicate(predicate));
} else {
var pages = context.document.pages(),
function sortLayerList(layers,output,reverse) {
var layers = (reverse && reverse == 1) ? layers.reverseObjectEnumerator().allObjects() : layers,
loop = layers.objectEnumerator(),
layer;
while (layer = loop.nextObject()) {
var output = (output) ? output : layer.parentGroup();
layer.moveToLayer_beforeLayer(output,nil);
}
log(context.document.documentData().objectID());
context.document.documentData().generateObjectID();
log(context.document.documentData().objectID());
var layers = context.selection[0].children(),
layersLoop = layers.objectEnumerator(),
layer,
minX = 0,
maxX = 1000,
minY = 0,
maxY = 1000,
bounds = NSMakeRect(minX,minY,maxX,maxY);
// Deselect the container
MSLayerSelector.alloc().init().updateSelectionWithRect_page_extendSelection_options_(NSMakeRect(0,0,1000,1000),context.document.currentPage(),false,0);