Import from DayOne ?


Is it possible for me to import notes from OneDay app?


Not directly, but maybe there is a way to export from Day One to get there. Our app can import text/markdown files, so if you can get Day One to export those, you can import into Agenda. (A quick search online suggests Day One can export plain text files)

You can also use copy and paste, of course.

Kind regards,

1 Like

Import from DayOne Classic

Hi there, I just imported ~300 entries form DayOne Classic (DayOne Version 1). The entries are actual text files stored within the DayOne Journal package (Go to your Journal.dayone file, then click “Show Package Contents.” You’ll see two folders: “entries” and “photos. Open the entries folder). Each entry is a xml file ending with .doentry.

You can import those to Agenda directly. However, each entry will then be filled with useless xml tags and have a random title. I scripted a Matlab script to generate text files with meaningful titles (content of first line and date of event). Maybe it helps others:

% Set encoding to UTF-8 for DayOne import. Needs to be done once per
% session.

% CharacterEncoding('UTF-8')

% get file list in current directory
files       = dir('*.doentry');
for f = 1:length(files)
str = fileread(files(f).name);  
% find Entry Text
expression  = '((?=<key>Entry Text</key>).*?(<\/string>))';
splitStr    = regexp(str,expression,'match');
% remove day one meta moments
splitStr     = regexprep(splitStr{1},'((!\[).*?\))',' ');
% remove <string> </string>
expression  = '((?<=<string>).*?(?=<\/string>))';
splitStr    = regexp(splitStr,expression,'match');
content     = char(splitStr{1});

% get first line as title
splitStr2   = splitlines(splitStr{1}) ;
title       = splitStr2{1};
% remove things I don not want to have in title
title       = replace(title,'/',' ');
title       = replace(title,'...',' ');
% get date of entry
expression  = '((?<=<date>).*?(?=<\/date>))';
splitStr3   = regexp(str,expression,'match');
date        = splitStr3{1};
dateNumber  = datenum(date,'YYYY-mm-DDTHH:MM:SSZ');
% save
filename    = [datestr(dateNumber,'YYYYmmDD_HH:MM') ' ' title '.txt'];
fileID = fopen(filename,'w');
fprintf(fileID,'%s %s',date, content);
% change modification date
command = ['touch -t "' datestr(dateNumber,'YYYYmmDDHHMM') '" "' filename '"'];


One more thing. This script can’t work with empty entires and sometimes the filename gets too long. Those instances need manual work.

One more question/wish: Could we get a option when importing to set the event date to the modification date of the file being imported?

best, ThorBarRa


Great stuff! You might want to use the x-callback-urls we now support, these allow you to set these kind of options:

Superb. Thanks for the hint. Works great. What a time saver.

One more question. Sorting of notes within one project by date seems to be base on the last modified date in Agenda (i.e the date the note was imported and/or moved to a different project).

So the imported notes are treated newer than those than those that have been written in Agenda prior to the import.
Is there a way to always sort by creation date or the date that the note is assigned to?

cheerst, Thorsten

There is no real sorting of notes as such. You are free to manually drag them into other orders. The only constraints applied are that if there are actual dates assigned to the notes, those are chronological. A note with no date can be dragged anywhere.

The import is just putting the notes at the top, but you can drag them down somewhere else.

The only constraints applied are that if there are actual dates assigned to the notes, those are chronological.

Thanks for the feedback. Then, there seems to be a bug. When I import notes, and assign dates to them after the import, those notes appear chronological relative to each other (and respond to changing the sorting order as expected) but compared to earlier notes with assigned date they are not chronological but always treated as if they were newer.

Could you send us a screenshot illustrating what you describe?

Yes, sure. Thanks for looking into this.

First, I entered a note directly into on MacOS on 13.1.2019 and changed the date back to 1.1.2018.

Then, I imported 3 text files (markdown format) in the

Now, I switched to the iPhone and assigned the dates:




Back to the MacOs app:

Ah, so you are adding the notes via x-callback. That makes a big difference. I had assumed you were importing them via the UI.

We will investigate.

Hey guys, I was wondering whether you have a way to import a boatload of journal entries (2500ish) from DayOne?
Trying the plain text exporter generates a large text file containing all my entries. I would love to preserve the date for obvious reasons…
Is there any way to import a JSON archive?

Not a supported way. There are the .agenda archives, which are a zipped JSON format, but not really intended for external use. If you are good at scripting, you could probably generate them.

I am bad enough to refrain from even trying :sweat_smile:

Time for a GraphQL API?