2024年2月5日月曜日

EvernoteからOneNoteへの移行(Evernote2OnenoteのTips)

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個以上のスペースは無視されてしまうので、「&nbsp;」でスペースを入れます。


課題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、何してくれんねん。ホント。




人気の投稿(過去7日間)