Note: This journal entry was posted in 2014 and is kept for historical reference only.
Day One is arguably one of the most clean and well developed journaling applications on the Mac platform. It plays nice with iOS, Apple’s natural complement to Mac, but everything else is dead in the water. So I wrote ETD, a script that imports emails and turns them into Day One entries.
You probably don’t want to use this anymore, now that Day One 2.0 has IFTTT integration. Here’s a recipe for you instead.
The premise is fairly simple: email an address you specify with an image attached and your entry. The result will be converted into a Day One entry.
This is how you set it up.
Grab the script
Let’s start by grabbing the script. At this point, it would be helpful to install rvm if you haven’t already.
git clone https://github.com/nicatronTg/email-to-DayOne.git
rvm install '2.0'
rvm use '2.0'
cp config.yaml.example config.yaml
Configure the script
Next, you’ll want to edit config.yaml to point to your email information. Assuming you have your own server, you’ll use your own configuration details here. This example uses GMail:
imap_username: '[email protected]'
In the same folder as the app.rb file, make a folder called images. Fill in the rest of the details above to match your GMail account.
Turn on IMAP in settings. I have settings that will allow my entries to be archived, but with no label. Changing the expunge settings will either allow you to either trash or permanently delete the message, depending on your preference.
Next, head over to filter settings and create the parameters for your journal entries. In my case, I search for mail only from my address, and of that mail, only messages with the subject “Journal.” This way, I can email myself and only I can add entries, as well as keep those entries out of my inbox.
Let’s do a dry run.
If all goes well, you should see a success message.
Up to 100 emails have been imported into Day One as journal entries.
At this point, you might want to schedule your imports. You can manually run the script at any time – this will have no effect on the chronology of your journal entries, but will save you the hassle of having to open the Terminal every time you want to do anything.
You’ll need a shell script. The following is for Zsh:
The following should work for Bash:
Save your shell script somewhere. At this point, you can diverge and, for free, setup a plist file that will automatically schedule it to run for you. I chose not to, and went with Lingon 3. It’s $5, and it simplifies this process greatly. Install it, and create a new job.
Call it “import_to_dayone” and point it to your shell script. The “when” is your choice. I choose at logon and every minute.
Open a terminal, and, for the last time, find your shell script. Make it executable.
chmod +x import_to_dayone.sh
Test it out
At this point, if you’ve been following along literally, you can launch a test by emailing yourself a new journal entry.
If the script isn’t working for you, report the issue and I’ll work on a fix. If you can improve the code, feel free to send a pull request back.
Does it work?
Most likely. I plan on maintaining this at least until Bloom releases an Android client for Day One.