Evernoteをプラスプランで使い続けていたのですが、ついにプラン廃止、強制的にパーソナルプランへ移行となってしまい、更新のタイミングでフリープランに切り替えました。
パーソナルは、ちょっと高すぎです。機能を使いきれないですし。
プラン移行後、追い打ちをかけるように、1ノートブック、50ノートに制限されてしまい、新しいノートを作るどころか、ノートの移動すらできない状況になってしまいました。アプリはアプリで、使い物にならないくらいに割引の広告…
というわけで、思い切ってOneNoteに移行してみました。Notionも考えたのですが、あまり細かいことを考えずにノートをサクサク作りたいのと、オフライン中に何もできなくなってしまうのでOneNoteにしました。
Evernote2Onenoteを使って移行しました…だけでは面白くないので、enexファイルを下処理することで、インポートの課題を多少改善できたので、その共有です。基本的には、Evernote独自のタグ、styleが引き継げないので、そこをゴニョゴニョしています。
最後に、私がやった下処理をするプログラムを置いておくので、よければ使ってください。
課題1:空行が消える
空行は
<div><br/><div>
となっているのですが、行頭にスペースを入れて、
<div> <br/></div>
とすると空行が残るようになります。
スペースを入れるのがイヤな場合は、
<div><br/><br/><div>
のように</br>を2個にしても空行ができますが、表に空白のセルがあると崩れてしまうので注意です。
課題2:インデントされない
インデントは、
<div style="padding-left:40px;">
のように、1レベルで40px下げられているので、その行頭に1インデントあたり4個のスペースを追加しました。単純にスペースを入れても、2個以上のスペースは無視されてしまうので、「 」でスペースを入れます。
課題3:中央寄せ、右寄せがされない
こちらも、
<div style="text-align:center;">
のようにstyleが指定されていますが、これが引き継げません。左右にスペースを補って中央寄せ、右寄せっぽくしました。
課題4:タスクが削除される
インポートすると、「サポートされていないコンテンツです~」という警告文に置き換わってしまいます。
<div style="--en-task-group:true; ...
というところが、該当部分ですが、ここはプレースホルダで、タスクは<task></task>タグとして、別のところで定義されています。
<task>の中の、<title>がタスクのタイトル、<taskStatus>がタスクの状態(open/completed)、<taskGroupNoteLevelID>がプレースホルダと紐づけるIDになります。
なので、openのタスクは( )、completedのタスクは(x)をタスクのタイトルにつけて、プレースホルダの位置に挿入しました。
こんな感じ:
<div>(x) タスク1(完了)</div>
<div>( ) タスク2(未完了)</div>
プレースホルダのところは、残しておくと警告文がでてしまうので、ざっくり削除します。
何を言っているのかさっぱり…という方は、後で紹介するプログラムを使ってください。
課題5:チェックボックスが削除される
チェックボックスは<en-todo/>というタグになっています。
<en-todo checked="false" />チェックボックス(チェックなし)
<en-todo checked="true" />チェックボックス(チェックあり)
これを、以下のようにチェックありは[x]、なしは[ ]に置き換えました。
<div>[ ]チェックボックス(チェックなし)</div>
<div>[x] チェックボックス(チェックあり)</div>
課題6:チェックリストが箇条書きになってしまう
チェックリストは、
<ul style="--en-todo:true;">
というリストになっていますので、リストをやめて、チェックボックスと同じように置き換えました。
タスク、チェックボックス、チェックリストは、終わっているノートはそのまま、まだ使っているノートは、手動でノートシールに置き換えるつもりです。
課題7:区切り線が消える
<hr/>を<div>-----------------</div>のように、「-」の線で置き換えました。
課題8:タグがセクションに変換される。複数タグがある場合は、ノートが重複する
これは、Evernoteの階層を、どうOneNoteに引き継ぐかによると思いますが、私はノートブック=セクションとしたかったので、タグを削除し、ノートブック名のタグを追加しました。
タグは、<tag>タグになっているのでこれを削除、代わりに
<tag>ノートブック名</tag>
を追加し、全ノートがノートブック名のセクションに格納されるようにしました。
このとき、元のタグ情報が消えてしまうので、「#tag1 #tag2 ...」のように、ノート本文に元のタグを追記するようにしました。あとで検索してノートシールを付けようという作戦だったのですが、OneNoteの検索がイケておらず、これはうまくいかず…
課題9:コードブロックの書式が消える、ノートリンクがEvernoteのリンクのまま
これはいかんともしがたいので、該当箇所に「!!!ここはコードブロック!!!」のような目印を追加して、インポート後に検索、修正することにしました。
コードブロックは、
<div style="--en-codeblock:true;>
ノートリンクは
<a href="evernote:/// ... >
のようになっているので、この直前に、
<div>!!!ここはコードブロック!!!</div>
のようにマークを入れました。
おまけのスクリプト
これまでのように、enexファイルを修正していけばいろいろできるのですが、さすがに手作業は無理なのでRubyでスクリプトを書いてやりました。下記に、スクリプトを実行ファイル化したものと、スクリプト本体を置いておきますので、使ってみてください。
また、設定が必要なので、readme.txtを確認してから使ってください。あと、決まり文句ですが、データが壊れても責任はとれませんし、途中でエラーで落ちてしまうこともあると思うので、必ずバックアップを取ったうえで、動いたらラッキーくらいで。
実行ファイルをそのまま使ってもらってもいいですし、スクリプトをいじってカスタムしてもらってもかまいません。もっといいスクリプトが書けたら、教えてもらえるとうれしいです。
https://hogi.sakura.ne.jp/dl/b4e2o_v101.zip
最後に
私は、これでなんとかOneNoteでやっていけそうな感じになりました。全ノートを確認していないので、Evernoteに過去データを残しつつ、OneNoteで新しいノートを作っていく形になりそうです。OneNoteはタグがない、Webクリップがいけてないと不満点もありますが、これは慣れかなぁと。
今回、OneNoteへの移行をしましたが、上記に書いたものは、OneNoteに特化したものではないので、他のノートサービスで同じような課題がある場合にも、有効かもしれません。
最後に、Evernote2Onenoteの作者さん、あなたがいなければ路頭に迷うところでした。Evernote、何してくれんねん。ホント。