Plug-In: Export Canvas Layers
Exports the layers of the current canvas as either individual PNG files, or as images composited from the bottom to the topmost layer. The plug-in uses the current export settings for PNG files.
Return to: OmniGraffle Plug-In Collection
Export Canvas Layers
/*{"type": "action","targets": ["omnigraffle"],"author": "Otto Automator","identifier": "com.omni-automation.og.export-layers-current-vanvas","version": "1.1","description": "Exports the layers of the current canvas as either individual PNG files, or as images composited from the bottom to the topmost layer.","label": "Export Current Canvas Layers","shortLabel": "Export Layers","paletteLabel": "Export Layers","image": "square.3.layers.3d.top.filled"}*/(() => {const action = new PlugIn.Action(async function(selection, sender){try {exportOptions = ["Individual Images","Composited Images"]exportOptionsMenu = new Form.Field.Option("exportOption",null,[0,1],exportOptions,0)inputForm = new Form()inputForm.addField(exportOptionsMenu)formPrompt = "Choose the export style:"buttonTitle = "Continue"formObject = await inputForm.show(formPrompt,buttonTitle)exportOptionIndex = formObject.values["exportOption"]cnvs = document.windows[0].selection.canvascnvs.layers.forEach(layer => layer.visible = false)wrappers = new Array()layerSet = cnvs.layers.slice().reverse()counter = 0for (aLayer of layerSet){aLayer.visible = trueexportName = encodeURIComponent(counter + "-" + aLayer.name)fileTypeID = "public.png"wrapper = await document.makeFileWrapper(exportName, fileTypeID)wrappers.push(wrapper)if (exportOptionIndex === 0){aLayer.visible = false}counter = counter + 1}cnvs.layers.forEach(layer => layer.visible = true)filesaver = new FileSaver()folderType = new FileType("public.folder")filesaver.types = [folderType, FileType.png, FileType.pdf]docName = document.name.replace(/\.[^/.]+$/, "")fldrwrapper = FileWrapper.withChildren(`${docName} Export Folder`, wrappers)urlObj = await filesaver.show(fldrwrapper)urlObj.open()}catch(err){if(!err.causedByUserCancelling){new Alert(err.name, err.message).show()}}});action.validate = function(selection, sender){return true};return action;})();