EvernoteからMacJournalへデータを取り込む方法

Home » 9300. Mac » EvernoteからMacJournalへデータを取り込む方法
2014-10-25 9300. Mac コメントはまだありません

こんにちは。
お久しぶりです。

僕がEvernoteを使い始めたのが2010年。その後、2012年からプレミアムユーザ登録として現在に至っていますが、Evernoteに登録されている文書数も7000を越えており、Evernoteそのものがガラクタ置き場のようになりつつあります。玉石混交、カオス状態に陥っています。

53

今日は、そのカオス化されたEvernoteをなんとかして、もう少し効率的に研究活動出来る様にして見たいというのが趣旨です。さて、どうしましょうか。


2010年からEvernoteを使い始め、4年も経つと流石にゴミも大量に発生しています。その時々によって必要とする情報も違い、今となってはゴミとなってしまった情報も相当多いです。ゴミなら削除してしまえば良いのでは?と思うのですが、完全にゴミになるのかと言えばそうでもなく、時に振り返って当時の情報にアクセスすることもしばしばある訳です。

では、玉石混合状態を放置して良いかと言えば・・・。それはそれで日常的にEvernoteをメインの情報取得ツールとしていると、中々そうもいかない訳です。
そこで考えたのが以下の方法です。

 1.Evernoteを整理して、思い切って古い情報は削除してしまう
 2.Evernoteはそのままにして必要な情報を選別しながら別のツールに移行する
 3.Evernoteをそのまま使い続ける

1は古い情報が完全に消えてしまう訳でリスクが高い。
2は手間暇がかかるが、Evernoteに手を加える必要がない。問題は大量な情報をどうやって移行するか?
3は何もしない。カオス状態を割り切る。

結局、上記2を採用しようと思いますが、これが一筋縄でいかない事は承知していますが、どうやって必要な情報を簡単に別のツールへ移行させるか?
それも出来ることなら、移行の為に余計な手間暇はあまりかけたくないし・・・。
そもそも、別のツールって何?
これも幾つか考えました。テキストだけでなくPDFや画像もすべてレイアウトを崩すことなく移行する為に適したツールは何でしょうか?

 1)OneNote
 2)MacJournal
 3)Growly Notes

1)のOneNotesはMacでも無料で使えるので良いのですが、同期が遅くて使えません。
2)は良いかもしれません。
3)はインポート出来るのかな?

結局、2)のMacJournalを移行先に決めました。と、言うより消去法でMacJournalしかのこりませんでした。移行先を決めたのは良いけど、大量のデータをどうやって移行させるか?

ネットで検索していると、僕と同じようにEvernoteを使っていて悩んでいる人も多く、こんなサイトを見つけました。記事を読んでいくと、Apple Scriptを使うと簡単にMacJournalへコピー出来るらしい。しかも、使った人のコメントを読んでみると絶賛です。では試しにこのApple Scriptを使ってみよう。と、言うことで使ってみました。使い方は簡単です。以下のスクリプトをコピーして[Apple Scriptエディタ]に貼り付けます。

(*
Veritrope.com
Evernote to MacJournal Exporter
Version 2.0 (Beta 1)
January 4, 2012

Project Status, Latest Updates, and Comments Collected at:
http://veritrope.com/code/evernote-to-macjournal-exporter

// CHANGELOG:

2.00 (Beta 1) REWRITE
1.01 BUG FIXES (“Can’t get item 1 of {}” )
1.00 INITIAL RELEASE

// RECOMMENDED INSTALLATION INSTRUCTIONS:

FastScripts Installation (Optional, but recommended):
–Download and Install FastScripts from http://www.red-sweater.com/fastscripts/index.html
–Copy script or an Alias to ~/Library/Scripts/Applications/NAME OF APP
–Set up your keyboard shortcut
*)

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

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

property itemexists : “”

(*
======================================
// MAIN PROGRAM
======================================
*)

–TEMP FILES PROCESSED ON THE DESKTOP
tell application “Finder”
if (the folder “Temp Export From Evernote” exists) then set SaveLoc to (the folder “Temp Export From Evernote”)
if not (the folder “Temp Export From Evernote” exists) then
set SaveLoc to (make new folder at (path to desktop folder) with properties {name:”Temp Export From Evernote”})
end if
end tell
set SaveLoc to (SaveLoc as alias)

–SELECT JOURNAL FOR IMPORT
tell application “MacJournal”
activate
set SelJournal to (choose journal with prompt “Choose Journal”)
end tell

–DO THE CONVERSION
my ev_Export(SaveLoc, SelJournal)

–SILENT DELETE OF TEMP FOLDER
my trashfolder(SaveLoc)

(*
======================================
// UTILITY SUBROUTINES
======================================
*)

–PDF CHECK
on PDFDetect(theFile)
try
set PDFalias to theFile as alias
return true
on error
return false
end try
end PDFDetect

–ADD LEADING ZEROS
on add_leading_zeros(this_number, max_leading_zeros)
set the threshold_number to (10 ^ max_leading_zeros) as integer
if this_number is less than the threshold_number then
set the leading_zeros to “”
set the digit_count to the length of ((this_number div 1) as string)
set the character_count to (max_leading_zeros + 1) – digit_count
repeat character_count times
set the leading_zeros to (the leading_zeros & “0”) as string
end repeat
return (leading_zeros & (this_number as text)) as string
else
return this_number as text
end if
end add_leading_zeros

–SILENT DELETE OF TEMP FOLDER (THANKS MARTIN MICHEL!)
on trashfolder(SaveLoc)
try
set trashfolderpath to ((path to trash) as Unicode text)
set srcfolderinfo to info for (SaveLoc as alias)
set srcfoldername to name of srcfolderinfo
set SaveLoc to quoted form of POSIX path of SaveLoc
set counter to 0
repeat
if counter is equal to 0 then
set destfolderpath to trashfolderpath & srcfoldername & “:”
else
set destfolderpath to trashfolderpath & srcfoldername & ” ” & counter & “:”
end if
try
set destfolderalias to destfolderpath as alias
on error
exit repeat
end try
set counter to counter + 1
end repeat
set destfolderpath to quoted form of POSIX path of destfolderpath
set command to “ditto ” & SaveLoc & space & destfolderpath
do shell script command
— this won’t be executed if the ditto command errors
set command to “rm -r ” & SaveLoc
do shell script command
return true
on error
return false
end try
end trashfolder

(*
======================================
// MAIN HANDLER SUBROUTINES
======================================
*)
on ev_Export(SaveLoc, SelJournal)
–GET SELECTION
tell application “Evernote”
set SelNotes to selection
set exported_Notes to {}

repeat with SelNote in SelNotes

–GATHER NOTE INFORMATION
set the_Title to title of (item 1 of SelNote)
set the_Notebook to notebook of (item 1 of SelNote)
set the_URL to source URL of (item 1 of SelNote)
set the_Notelink to note link of (item 1 of SelNote)
set the_Lat to latitude of (item 1 of SelNote)
set the_Long to longitude of (item 1 of SelNote)

–GATHER TAG INFORMATION
set ev_Tags to tags of (item 1 of SelNote)
set the_Tags to {}
repeat with ev_Tag in ev_Tags
copy (name of ev_Tag) to the end of the_Tags
end repeat

–GATHER AND FORMAT TIME INFORMATION
set creation_Date to creation date of (item 1 of SelNote)
set the_Year to (year of creation_Date) as integer
set the_Month to my add_leading_zeros((month of creation_Date as integer), 1)
set the_Date to my add_leading_zeros((day of creation_Date as integer), 1)
set the_Hour to my add_leading_zeros((hours of creation_Date as integer), 1)
set the_Min to my add_leading_zeros((minutes of creation_Date as integer), 1)
set the_Sec to my add_leading_zeros((seconds of creation_Date as integer), 1)
set cre_Date to (the_Year & the_Month & the_Date & “T” & the_Hour & the_Min & the_Sec) as string

–CREATE THE RECORD FOR EXPORT
copy {the_Title, (name of the_Notebook), cre_Date, creation_Date, the_Tags, the_URL, the_Notelink, the_Lat, the_Long} to end of exported_Notes
end repeat

–BEGIN EXPORT FROM EVERNOTE
set export_Count to (count of exported_Notes)
set export_Increment to 1

repeat with exported_Note in exported_Notes

–RESET NOTE VALUES FROM EXPORTED NOTE LIST
set mj_Title to “”
set mj_Notebook to “”
set mj_FormattedCreation to “”
set mj_Creation to “”
set mj_Tags to “”
set mj_URL to “”
set mj_Notelink to “”
set mj_Lat to “”
set mj_Long to “”
set mj_Annotation to “”
set itemexists to “”

–PULL NOTE VALUES FROM EXPORTED NOTE LIST
set mj_Title to (item 1 of exported_Note)
set mj_Notebook to (item 2 of exported_Note)
set mj_FormattedCreation to (item 3 of exported_Note)
set mj_Creation to (item 4 of exported_Note)
set mj_Tags to (item 5 of exported_Note)
set mj_URL to (item 6 of exported_Note)
set mj_Notelink to (item 7 of exported_Note)
set mj_Lat to (item 8 of exported_Note)
set mj_Long to (item 9 of exported_Note)
set mj_Annotation to (“Original Item: ” & mj_Notelink)

–CHOOSE URL OR NOTE LINK FOR MJ LINK
if mj_URL is missing value then set mj_URL to “”
if mj_URL is not “” then
set mj_Link to mj_URL
else
set mj_Link to mj_Notelink
end if

–ADJUST LAT/LONG, IF NECESSARY
if mj_Lat is missing value then set mj_Lat to 0
if mj_Long is missing value then set mj_Long to 0

–CREATE INCREMENTAL SAVE LOCATION
set export_Folder to (SaveLoc & export_Increment as string)
set export_Note to {}

–FIND THE NOTE IN EVERNOTE
set the_Notes to (find notes “created:” & mj_FormattedCreation & ” intitle:\”” & mj_Title & “\””)

–IF UNTITLED, ZERO IN ON CORRECT NOTE
repeat with the_Note in the_Notes
if creation date of the_Note is equal to mj_Creation then
copy (item 1 of the_Note) to the end of export_Note
end if
end repeat

–EXPORT THE NOTE FROM EVERNOTE AS HTML
export export_Note ¬
to export_Folder ¬
format HTML

–BEGIN PROCESSING ITEM FOR MACJOURNAL
tell application “Finder”
try
–GET EXPORTED FILE
set exported_Note to (every file of folder export_Folder whose ¬
name extension is “html”)
set exported_POSIX to (POSIX path of (exported_Note as alias))
set exported_Filename to (name of (item 1 of exported_Note))

–TRIM EXTENSION
set old_TID to AppleScript’s text item delimiters
set AppleScript’s text item delimiters to “.”
set folder_Name to (first text item of exported_Filename)
set AppleScript’s text item delimiters to old_TID

–LOOK FOR RESOURCE FOLDER
set ResourceFolder to ((export_Folder & “:” & folder_Name & “.resources”) as string)

–LOOK FOR PDF
set theFile to (every document file of folder ResourceFolder whose ¬
name extension is “PDF”)
set thePDF to POSIX path of (theFile as alias)
set itemexists to my PDFDetect(theFile)
end try
end tell

–IMPORT PDF IF PRESENT…
tell application “MacJournal”
if itemexists is true then
tell SelJournal
set resultObject to make new journal entry with properties ¬
{name:mj_Title, content file:thePDF, date:mj_Creation, link:mj_Link, annotation:mj_Annotation, location latitude:mj_Lat, location longitude:mj_Long}
repeat with mj_Tag in mj_Tags
add tag mj_Tag to resultObject
end repeat
end tell

–OR CONVERT HTML TO A WEBARCHIVE FILE
else
tell application “Finder”
do shell script (“textutil -convert webarchive ” & (quoted form of exported_POSIX))
set mj_Archive to POSIX path of ((export_Folder & “:” & folder_Name & “.webarchive”) as string)
end tell
tell SelJournal
set resultObject to make new journal entry with properties ¬
{name:mj_Title, content file:mj_Archive, date:mj_Creation, link:mj_Link, annotation:mj_Annotation, location latitude:mj_Lat, location longitude:mj_Long}
repeat with mj_Tag in mj_Tags
add tag mj_Tag to resultObject
end repeat
end tell
end if
end tell
set export_Increment to (export_Increment + 1)
end repeat
end tell
end ev_Export

【EvernoteからMacJournalへデータをコピーする手順】

1.Evernoteを起動してコピーしたい文書を選択します。

05

2.次にApple Scriptエディタを起動して「実行」ボタンを押します。

26

3.そうすると、以下の画面が表示されますので、MacJournalで取り込み先のビューを指定します。

16

手順はこれだけです。あとは上記1〜3の繰り返しです。

42

僕はこんな感じでMacJournalへEvernoteの情報を取り込む事が出来ました。
結局Evernoteは意図的にカオス状態のままにしておき、その時に必要な情報を選択的にMacJournalへ取り込むという方法にしました。この様にしておけばオリジナルなEvernoteには手を加えず、Macjournal上で必要な加工が施せ、履歴も残せます。Evernoteは大変便利なツールですが情報が溢れだすと洪水の様な状態に陥ります。そんな便利なEvernoteを更に効率良く使う為の一つの考え方としてApple Scriptをご紹介しました。

では、今日はこのへんで。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です