Export Evernote Items to Day One

Shared By: Justin

Description

Updated on September 6, 2012

This AppleScript requires the download and installation of the DayOne Command Line App:
CLICK HERE TO DOWNLOAD

Day One is a journal / diary / text logging application for the Mac which has attracted a lot of positive attention: It has tremendous visual polish and appeal, prompts you to write daily, and it also has an iPhone / iPad app for when you’re away from your computer.

Brian Stucki, the owner of macminicolo.net (and, perhaps, the person with the most awesome “Mac at Work” setup ever) recently reached out to see if I had any scripts in the pipeline to export Evernote items to Day One.

I didn’t — but I thought I’d quickly whip up one as a starting point for people to build on!

Script Notes

This AppleScript lets you select an item (or items) in Evernote and transfer a plain text version of that note into Day One. The creation date of the Evernote item is used for the entry date in Day One. UPDATE: I’ve added a switch at the beginning of the script which, when turned on, creates a “header line” of the title of the Evernote item at the top of each new entry.

Since this is a “bare bones” version presented for people to discuss and play around with, I didn’t put in any notifications or additional features. Highlight the item in Evernote, run the script, and look in Day One to confirm it arrived correctly.

Does it work well for you? Is there anything that would make it more useful?

Reach out to me on Twitter — or just let me know in the comments below!

The Code

(*
Veritrope.com
Export Evernote Items to DayOne
Version 0.98 (Beta 2)
September 5, 2012

// 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.

// LIKE THIS SCRIPT?
If this AppleScript is helpful to you, please show your support 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            - UPDATED TO USE NEW CLI APP
        0.91            - Added Optional Header
            0.90 (Beta 1)   - Initial Release

*)


(*
======================================
// USER SWITCHES (YOU CAN CHANGE THESE!)
======================================
*)


-- IF YOU'D LIKE THE SCRIPT TO CREATE A
-- "HEADER LINE" FOR THE DAY ONE ENTRY USING
-- THE TITLE OF THE EVERNOTE ITEM, THEN
-- CHANGE THIS VALUE TO "ON"…
property dayHeader : "OFF"

(*
======================================
// PROPERTIES (USE CAUTION WHEN CHANGING)
======================================
*)

property noteName : ""
property noteCreated : ""
property noteHTML : ""
property noteLink : ""
property note_Date : ""

(*
======================================
// 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
        set note_Text to my convert_Plaintext(noteHTML)
       
        --CONVERT DATE TO PLAIN TEXT STRING
        set note_Date to my convert_Date(noteCreated)
       
        --MAKE THE NEW ITEM IN DAY ONE
        my make_DayOne(noteName, note_Date, note_Text, noteLink)
       
    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 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

(*
======================================
// MAIN HANDLER SUBROUTINES
======================================
*)


--MAKE ITEM IN DAY ONE
on make_DayOne(noteName, note_Date, note_Text, noteLink)
    if dayHeader is "ON" then
        --ADD A "HEADER" AND MAKE THE ENTRY
        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
    else
        --MAKE THE ENTRY WITH NO "HEADER"
        set new_DayOne to "echo " & (quoted form of note_Text) & " | /usr/local/bin/dayone -d=\"" & note_Date & "\" new"
        do shell script new_DayOne
    end if
end make_DayOne

8 Responses to “Export Evernote Items to Day One”

  1. Leonardo says:

    HI
    Tnx for this script which works a charm!

    Any way to add the tittle of the note from Evernote as the first line in Day One (if this makes sense)

    Leonardo

  2. Matsya says:

    Hi,

    Is that possible to add the tags used in Evernote notes to the new Day One entries?

    Thanks in advance for your help. :)

    Regards,

    -MATSYA-

  3. Jeffrey D. Shaffer says:

    Worked like a charm! Transferred over 1000 entries from Evernote to Day One (several years worth of diary). Not sure how long it took, as I started the job and went to sleep. Was done in the morning.

    Thanks for the great script!

  4. David says:

    I am having trouble on Mac 10.8. I get the error “sh; /usr/local/bin/dayone: No such file or director.”

    Thanks for any help you could give.

  5. Steve J says:

    Justin, none of the Evernote notes containing images makes it over into DayOne. Possible to bring those items over with images into the images section of DayOne? Steve J

  6. Douglas says:

    I have saved the script as both an application and a script. I can not figure out how to run it from within Evernote. Launching the application does nothing, even if I have selected items in Evernote.

    p.s. Tabbing from the “Name” field at the left of this comment field jumps me to a spot somewhere up the page. Tab order quandry, perhaps?

  7. Douglas says:

    Okay… first, AppleScript’s menu item needs to be turned on, found in the preferences of the AppleScript Editor application found in the Utilities folder. Next, you can use that menu to open the Evernote scripts folder. Place the script, saved from the editor as a script and NOT an application, into that folder. Or use the Move To… function in the applescript editor. Then select an item in Evernote and select the script from the applescript menu. Perhaps there is another way to do this, but I recommend adding a few hints here or in your Applescript intro doc. Thanks for the awesome script!

rss Subscribe to Comments RSS Feed


You can use these tags in your comment: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>