Skip to content

Instantly share code, notes, and snippets.

@robrecord
Last active May 7, 2019 22:55
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save robrecord/d9418583d0925920f682 to your computer and use it in GitHub Desktop.
Save robrecord/d9418583d0925920f682 to your computer and use it in GitHub Desktop.
Migrate selected Evernote notes to Day One. Supports tags. Supports pandoc to convert to markdown. No support for attachments yet. Original version at http://veritrope.com/code/export-evernote-items-to-day-one/
(*
◸ Veritrope.com
Export Evernote Items to DayOne
VERSION 0.98.2
December 18, 2015
// UPDATE NOTICES
** Follow @Veritrope on Twitter, Facebook, Google Plus, and ADN for Update Notices! **
// SUPPORT VERITROPE!
If this AppleScript was useful to you, please take a second to show your love here:
http://veritrope.com/support
// SCRIPT INFORMATION AND UPDATE PAGE
http://veritrope.com/code/export-evernote-items-to-day-one
// REQUIREMENTS
** THIS SCRIPT REQUIRES YOU TO DOWNLOAD THE DAYONE COMMAND LINE APP:
http://dayoneapp.com/downloads/dayone-cli.pkg
// CHANGELOG
Version
0.98.2 (by @robrecord) - Tidied up code
0.98.1 (by @robrecord) - Added support for tags and notebook name (as a tag)
- Added support for pandoc to convert to markdown
0.98 - UPDATED TO USE NEW CLI APP
0.91 - Added Optional Header
0.90 (Beta 1) - Initial Release
// RECOMMENDED INSTALLATION INSTRUCTIONS:
// TERMS OF USE:
This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.
To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/3.0/ or send a letter to Creative Commons, 444 Castro Street, Suite 900, Mountain View, California, 94041, USA.
*)
(*
======================================
// USER SWITCHES (YOU CAN CHANGE THESE!)
======================================
*)
-- IF YOU'D LIKE THE SCRIPT TO NOT CREATE A
-- "HEADER LINE" FOR THE DAY ONE ENTRY USING
-- THE TITLE OF THE EVERNOTE ITEM, THEN
-- CHANGE THIS VALUE TO "false"…
property dayHeader : true
-- INSTALL PANDOC TO CONVERT TO MARKDOWN? (INSTALL PANDOC WITH HOMEBREW)
property convertMarkdown : false
(*
======================================
// OTHER PROPERTIES (USE CAUTION WHEN CHANGING)
======================================
*)
property noteName : ""
property noteCreated : ""
property noteHTML : ""
property noteLink : ""
property note_Date : ""
property noteTags : {}
property noteNotebook : ""
(*
======================================
// MAIN PROGRAM
======================================
*)
tell application "Evernote"
set selected_Items to selection
repeat with selected_Item in selected_Items
--GET THE EVERNOTE DATA
my getEvernote_Info(selected_Item)
--CONVERT HTML TO PLAIN TEXT
if convertMarkdown is true then
set note_Text to my convert_Markdown(noteHTML)
else
set note_Text to my convert_Plaintext(noteHTML)
end if
--CONVERT DATE TO PLAIN TEXT STRING
set note_Date to my convert_Date(noteCreated)
--ADD TAGS
set note_Text to my add_Tags(note_Text, noteTags, noteNotebook)
--MAKE THE NEW ITEM IN DAY ONE
my make_DayOne(noteName, note_Date, note_Text, noteLink, noteTags)
end repeat
end tell
(*
======================================
// PREPARATORY SUBROUTINES
======================================
*)
--GET THE EVERNOTE DATA
on getEvernote_Info(theNotes)
tell application "Evernote"
try
set noteID to (local id of item 1 of theNotes)
set noteName to (title of item 1 of theNotes)
set noteSource to (source URL of item 1 of theNotes)
set noteCreated to (creation date of item 1 of theNotes)
set noteModified to (modification date of item 1 of theNotes)
set noteTags to (tags of item 1 of theNotes)
set noteAttachments to {attachments of item 1 of theNotes}
set noteAltitude to (altitude of item 1 of theNotes)
set noteENML to (ENML content of item 1 of theNotes)
set noteHTML to (HTML content of item 1 of theNotes)
set noteLat to (latitude of item 1 of theNotes)
set noteLong to (longitude of item 1 of theNotes)
set noteNotebook to (name of notebook of item 1 of theNotes)
set noteLink to (note link of item 1 of theNotes)
end try
end tell
end getEvernote_Info
(*
======================================
// UTILITY SUBROUTINES
======================================
*)
--CONVERT HTML TO PLAIN TEXT
on convert_Plaintext(noteHTML)
set shell_Text to "echo " & (quoted form of noteHTML) & " | textutil -stdin -convert txt -stdout"
set note_Text to do shell script shell_Text
return note_Text
end convert_Plaintext
--CONVERT HTML TO MARKDOWN
on convert_Markdown(noteHTML)
set shell_Text to "echo " & (quoted form of noteHTML) & " | /usr/local/bin/pandoc -s -f html -t markdown_github"
set note_Text to do shell script shell_Text
return note_Text
end convert_Markdown
--CONVERT DATE TO PLAIN TEXT STRING
on convert_Date(noteCreated)
set AppleScript's text item delimiters to ""
set m to ((month of noteCreated) * 1)
set d to (day of noteCreated)
set y to (year of noteCreated)
set t to (time string of noteCreated)
set date_String to (m & "/" & d & "/" & y & " " & t) as string
return date_String
end convert_Date
--ADD TAGS TO NOTE TEXT
on add_Tags(note_Text, noteTags, noteNotebook)
set noteTagsText to ""
if noteTags is not {} then
repeat with i from 1 to count of noteTags
set noteTagsText to noteTagsText & "#" & (name of item i of noteTags) & " "
end repeat
end if
if noteNotebook is not "" then set noteTagsText to "Notebook: #" & noteNotebook & "
" & noteTagsText
return note_Text & "
" & noteTagsText
end add_Tags
(*
======================================
// MAIN HANDLER SUBROUTINES
======================================
*)
--MAKE ITEM IN DAY ONE
on make_DayOne(noteName, note_Date, note_Text, noteLink)
if dayHeader is true then set note_Text to (noteName & return & return & note_Text)
set new_DayOne to "echo " & (quoted form of note_Text) & " | '/usr/local/bin/dayone' -d=\"" & note_Date & "\" new"
do shell script new_DayOne
end make_DayOne
@tetherit
Copy link

Does this support copying photos from one note?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment