[Evernote]Bluewindから新規ノート作成、直後にノートリンク取得するスクリプトを自作しました(その2)



前回の記事で、動機や全体の流れを説明したので、この記事で具体的な処理を紹介していきたいと思います。

 

おさらい:全体の流れ

1.ENScript.exeを使って、ノートタイトルを指定して新規ノートを作成

2.ENScript.exeを使って同期(この際、同期ログをテキストファイルに出力させる)
3.同期ログから、秀丸を用いてノートタイトルでgrep検索
4.ノート情報部分を切り貼りしてノートリンクに仕上げる

 

1.ENScript.exeを使って、ノートタイトルを指定して新規ノートを作成

ENScript.exe createNote /s (ファイル) /i (ノートタイトル)

というコマンドで、ノートタイトルとノートの内容となるファイルを指定してノートを作ることができます。

 

好みの分かれるところかもしれませんが、私はノートの1行目とノートタイトルを合わせた方がすっきりするので、下記のようなbatファイルを作りました。

echo %1> C:\tmp\TitleContent.txt
"C:\Program Files\Evernote\Evernote\ENScript.exe" createNote /s C:\tmp\TitleContent.txt /i %1
exit

このbatファイル実行時に、ノートタイトルを引数として渡すと、Evernoteに指定したノートタイトルのノートが出来上がります。

 

2.ENScript.exeを使って同期(この際、同期ログをテキストファイルに出力させる)

ここでもENscript.exeを使います。

ENscript.exe syncDatabase /l C:\tmp\syncDatabase.log


これを実行すると、同期が行われて、そのlogがsyncDatabase.logに残ります。ここからノート情報を切り出します。

 

3.同期ログから、秀丸を用いてノートタイトルでgrep検索

その同期ログの中に、下記のようにノートタイトルとノート情報が続いて出現する部分があります。

syncEvernoteLog

まず、ノートタイトルが出てくる行を探し、末尾の改行を削除、その後にノートタイトルを含む行だけをgrep検索で拾ってくる、ということをしています。

 

4.ノート情報部分を切り貼りしてノートリンクに仕上げる

ノート情報が得られたら、あとは前後の要らない部分を削り、アカウント情報をくっつけたり、ノート情報を繰り返したりすればノートリンクの完成です。

 

実際には3.と4.は秀丸マクロにやらせています。

 

現状は、秀丸マクロに外部から文字列をスマートに渡す方法がわからず、クリップボードを介して処理しています。

 

ファイルから持ってくる、または引数として渡す、ということができればクリップボードの上書きが避けられると思うのですが、秀丸マクロのヘルプを見てもすぐにはわかりませんでした。素人の限界です。

 

クリップボードに読み込む方法としては、bluewindのgetTextという単機能を使っています(次回の記事でbluewind周りを説明するので、そこで具体的な内容を書きます。)

同じ事をbatファイルを利用して実現することも可能だと思います。

 

さて、そんな感じですので、このマクロはとりあえず動くのですが自分でもよくわかっていない処理もあったりします。

切り貼りと試行錯誤だらけで、きれいなものではありませんが載せてしまいます。

 

「ノートリンク化」の最後の方に出てくる「(アカウント情報)」については、自分のノートリンクを確認して、自分のアカウント情報に置き換えて下さい。

例:"evernote:///view/00000000/s000/"

// 表示の更新抑止
disabledraw;

//検索バッファを変数に退避
$b=searchbuffer;
#s=searchoption;

//クリップボードから変数を読み込む
beginclipboardread;
$noteTitle = getclipboard;
$grepSentence="\.\*" + $noteTitle + "\.\*\\f\\n";

//一行化
    setcompatiblemode 0x0F;
    begingroupundo;
    replaceallfast $grepSentence , "\\0\\t" , regular, nocasesense;
    if( ! result )  beep;
    endgroupundo 1;

//元ウィンドウのハンドルを取得する
    #hwnd=hidemaruhandle(0);
//grep
localgrep $noteTitle,casesense;
clearupdated;
#h=hidemaruhandle(0);

//前後の削除
    setcompatiblemode 0x0F;
    begingroupundo;
    replaceall "^.*{" , "" , regular, nocasesense, nohilight;
    if( ! result )  beep;
    endgroupundo 1;
    begingroupundo;
    replaceall "}" , "" , nohilight;
    if( ! result )  beep;
    endgroupundo 1;

//ノートリンク化
    setcompatiblemode 0x0F;
    begingroupundo;
    replaceall "^.*\\f\\n" , "\\0/\\0/\\n" , regular, nocasesense, nohilight;
    if( ! result )  beep;
    endgroupundo 1;
    begingroupundo;
    replaceall "^" , "evernote:///view/(アカウント情報)" , regular, nocasesense, nohilight;
    if( ! result )  beep;
    endgroupundo 1;

//変数に退避しておいた検索バッファを戻す
setsearch $b,#s;

//新ウィンドウのハンドルを取得
    #hwnd_new=hidemaruhandle(0);

//元ウィンドウを閉じる(強制的に)
    closehidemaruforced #hwnd;
endmacro;

 

6.既知の制限事項

(1)秀丸マクロにキーワードを取り込む際に、クリップボードを経由しています。そのため、クリップボードが上書きされてしまいます。


(2)ノートタイトルに記号が入ると、途中で文字列が切れたり、最後まで動かなかったりすることがあります。

 

もし、こう直したらいいよ、というアドバイスがあれば教えて下さい。

 

いったんここで記事を終えて、上記1~5をbluewindで繋げる部分を次回の記事に書きたいと思います。

 

[この記事の執筆にかかった時間 56分]

 

[関連記事一覧]

[Evernote]Bluewindから新規ノート作成、直後にノートリンク取得するスクリプトを自作しました(その1)
[Evernote]Bluewindから新規ノート作成、直後にノートリンク取得するスクリプトを自作しました(その2)
[Evernote]Bluewindから新規ノート作成、直後にノートリンク取得するスクリプトを自作しました(その3)

関連記事

移転後の新ブログの更新情報はこちらから受け取れます。

follow us in feedly

移転先ブログのリンク:流れるような一日を


コメントの投稿

非公開コメント

スポンサード リンク
移転先ブログ
プロフィール

坂根(昔はneunzehnと名乗っていました)

Author:坂根(昔はneunzehnと名乗っていました)
■信条
手間は少ない方が良い。
機械にさせられることは、機械にやってもらえば良い。人間は、人間様にしかできない仕事に力を割くべき。
自分の記憶力にはできるだけ頼らずにものごとを処理したい。

■環境
Windows7
スマホ:docomo SC-04E(Android4.2)

■その他
男児1人、女児1人の父親。
妻を含めて4人家族。
職業は司法書士。

■連絡先
Twitter:@sakane0958
mail:sakane@fluentlife.jp

2013年11月にブログを移転しました。
新ブログはこちら↓
http://fluentlife.jp/

リンク
にほんブログ村 司法書士試験
月別アーカイブ
TrackFeed
track feed 流れるような一日を(旧)
LECバナー
ブロとも一覧

ベテラン司法書士浪人生 合格への道  (それから)
最新コメント
最新記事
カテゴリ
検索フォーム
スポンサード リンク
Author : Masayuki Sakane