-
-
Save csreed/2a7f625ced450bdc76891893c54783cf to your computer and use it in GitHub Desktop.
| (* | |
| Opens the support note for an OmniFocus task/project in Evernote. Creates the note if necessary, linking the note back to the task/project. | |
| NB: If you set this up by hand, the evernote:/// URL in OmniFocus needs to be enclosed in <> for the script to find it. | |
| Put this script in ~/Library/Application Scripts/com.omnigroup.omnifocus2. Then you can add the script as a custom toolbar item. | |
| version 1.0: Initial release | |
| *) | |
| property notebookName : "Planner" | |
| on run | |
| set theURL to my getExistingNoteURL() | |
| if theURL is equal to "" then | |
| set theURL to my makeNewNoteURL() | |
| end if | |
| my viewNote(theURL) | |
| end run | |
| (* | |
| Checks for an existing note. | |
| Returns the note's URL if found, "" if not. | |
| *) | |
| on getExistingNoteURL() | |
| tell application "OmniFocus" | |
| tell front window | |
| set the_task to value of item 1 of selected trees of content | |
| set existing_note_value to the_task's note | |
| set p1 to offset of "evernote:///" in existing_note_value | |
| if p1 is 0 then | |
| return "" | |
| end if | |
| set the_existing_url to text p1 through -1 of existing_note_value | |
| set p2 to offset of ">" in the_existing_url | |
| if p2 is not 0 then | |
| set the_existing_url to text 1 through (p2 - 1) of the_existing_url | |
| end if | |
| return the_existing_url | |
| end tell | |
| end tell | |
| end getExistingNoteURL | |
| (* | |
| Makes a new support note, cross-referenced to the selected OmniFocus task/project. | |
| *) | |
| on makeNewNoteURL() | |
| (* Collect information from the selected OmniFocus task/project *) | |
| tell application "OmniFocus" | |
| tell front window | |
| set the_task to value of item 1 of selected trees of content | |
| set the_task_link to "omnifocus:///task/" & (the_task's id) | |
| set the_task_name to the_task's name | |
| set the_due_date to the_task's due date | |
| end tell | |
| end tell | |
| (* Create a note in Evernote *) | |
| tell application "Evernote" | |
| set the_notebook to notebook notebookName | |
| set the_note to create note with html "" title the_task_name notebook the_notebook | |
| tell the_note | |
| set source URL to the_task_link | |
| set reminder time to the_due_date | |
| end tell | |
| -- The note link for new notes isn’t available until the note has synced. | |
| my synchronizeEvernote() | |
| set the_note_link to the_note's note link | |
| end tell | |
| (* Add note link to OmniFocus task *) | |
| tell application "OmniFocus" | |
| set link_text to "Evernote <" & the_note_link & ">" | |
| set current_note to the_task's note | |
| if current_note is equal to "" then | |
| set the_task's note to link_text | |
| else | |
| set the_task's note to (current_note & " | |
| " & link_text) | |
| end if | |
| end tell | |
| return the_note_link | |
| end makeNewNoteURL | |
| (* | |
| We only have the `synchronize` command, which initiates a sync and returns immediately. | |
| So start the sync and poll every 250ms. | |
| *) | |
| on synchronizeEvernote() | |
| tell application "Evernote" | |
| synchronize | |
| repeat while isSynchronizing | |
| delay 0.25 | |
| end repeat | |
| end tell | |
| end synchronizeEvernote | |
| (* | |
| Tell Evernote to show the note. | |
| *) | |
| on viewNote(theURL) | |
| tell application "Evernote" | |
| activate (open location theURL) | |
| end tell | |
| end viewNote |
This is a beautiful script. Elegant solution to the problem and well-written to boot. Links work perfectly on IOS and MacOS
Thank you so much for sharing!
I've been using this script for years - and would miss it terribly if I couldn't use it. And now, on my new Mac, I suddenly get this error message:
The operation couldn’t be completed. /Users/fdx247/Library/Application Scripts/com.omnigroup.OmniFocus3/Support Note.scpt:1874:1886: script error: Expected end of line, etc. but found identifier. (-2741)
Referring to this line: set the_notebook to notebook notebookName
I've changed the first line to match my default notebook: property notebookName : "@inbox"
But when compiling it in the script editor i get the same error.
Found the answer: Evernote V10 does not support AppleScript... go figure...
Hi @csreed. Thank you for building this.
I am not able to make it work. I think this is related to the statement
" NB: If you set this up by hand, the evernote:/// URL in OmniFocus needs to be enclosed in <> for the script to find it."
I can install and make it run in OF2. But I get:
I have created a notebook on evernote called "Planner"
What am I doing wrong?
Thank you!