Plug-In: Duplicate Selected Projects to New Folder

Duplicates the selected projects to a new folder and sets the status of the duplicated projects to Active. Good for use with stored “On-Hold” projects!

Return to: OmniFocus Plug-In Collection

Duplicate Selected Projects to New Folder
   

/*{ "type": "action", "targets": ["omnifocus"], "author": "Otto Automator", "identifier": "com.omni-automation.of.duplicate-project-to-new-folder", "version": "1.2", "description": "Duplicates the selected projects to a new folder and sets the status of the duplicated projects to Active.", "label": "Duplicate to New Folder", "shortLabel": "Duplicate to New Folder", "paletteLabel": "Duplicate to New Folder", "image": "plus.rectangle.on.folder" }*/ (() => { const action = new PlugIn.Action(async function(selection, sender){ items = selection.projects textInputField = new Form.Field.String( "folderName", "Folder Title", null ) statusMenuField = new Form.Field.Option( "statusIndex", "Project Status", [0,1], ["Active", "On-Hold"], 0 ) inputForm = new Form() inputForm.addField(textInputField) inputForm.addField(statusMenuField) inputForm.validate = function(formObject){ var textValue = formObject.values['folderName'] if(!textValue){return false} return true } formObject = await inputForm.show("Name for folder:","Continue") folderName = formObject.values["folderName"] folder = new Folder(folderName) statusIndex = formObject.values["statusIndex"] statusType = [Project.Status.Active, Project.Status.OnHold][statusIndex] duplicatedItems = duplicateSections(items, folder.beginning) duplicatedItems.forEach(item => item.status = statusType) folderID = folder.id.primaryKey URL.fromString("omnifocus:///folder/" + folderID).open() }); action.validate = function(selection, sender){ return (selection.projects.length > 0) }; return action; })();