Action

Send to DevonThink and OmniFocus

Posted by mhodgkinsonrowe, Last update over 3 years ago

Exports the current draft to DevonThink as markdown and creates any open tasks in the OmniFocus inbox. Tasks are indented based on header level.

Steps

  • script

    // See online documentation for examples
    // https://docs.getdrafts.com/docs/actions/scripting
    
    let tasks = '';
    let cleaned_title = '';
    let indent_level = 0;
    let task_indentifier = '[ ]';
    
    
    function createTaskpaper(line, index) {
    
    	if (line.startsWith('# ')) {
    		cleaned_title = line.replace('# ', '')
    		tasks += cleaned_title + "\n"
    		indent_level = 0
    	}
    	
    	if (line.startsWith('## ')) {
    		tasks += "\t" + line.replace('## ', '').trim() + "\n"
    		indent_level = 1
    	}
    	
    	if (line.startsWith('### ')) {
    		tasks += "\t\t" + line.replace('### ', '').trim() + "\n"
    		indent_level = 2
    	}
    	
    	if (line.startsWith('#### ')) {
    		tasks += "\t\t\t" + line.replace('#### ', '').trim() + "\n"
    		indent_level = 3
    	}
    	
    	if (line.startsWith('[ ]')) {
    		tasks += "\t".repeat(indent_level + 1) + line.replace(task_indentifier, '').trim() + "\n";
    	}
    }
    
    draft.content.split("\n").forEach(createTaskpaper);
    draft.setTemplateTag("tasks", tasks.trim());
    draft.setTemplateTag("cleanedtitle", cleaned_title);
    
    
    // Two URL actions to follow script:
    // 
    // omnifocus:///paste?content=[[tasks]]
    // x-devonthink://createmarkdown?title=[[cleanedtitle]]&text=[[draft]]&tags=[[tags]]
  • url

    template
    omnifocus:///paste?content=[[tasks]]
    useSafari
    false
    encodeTags
    true
  • url

    template
    x-devonthink://createmarkdown?title=[[cleanedtitle]]&text=[[draft]]&tags=[[tags]]
    useSafari
    false
    encodeTags
    true

Options

  • After Success Default
    Notification Info
    Log Level Info
Items available in the Drafts Directory are uploaded by community members. Use appropriate caution reviewing downloaded items before use.