コマンドラインからEvernoteを活用したいのに日本語が文字化けするので萎えた
なんだかモヤモヤするので未解決だけどエントリー。
皆さんはWindowsからEvernoteにノートを追加するとき、何を使われてますか?
普通は「Evernote for Windows」ですよね、きっと。 あるいは、ブラウザからクリッピングツールなんかで追加してるかもしれません。
もしかするとスマホからしかしないよ、ということのほうが多いかもしれない今日この頃…
モヤモヤしてること
ご存知の方はご存知だと思うのですが、Evernoteって自前のクリッピングツール(EvernoteClipper.exe)のためにCOMによるアクセスが許可されています。
また、公式にサポートされていることがわかっているのが「ENScript.exe」というコマンドラインツールを使っての操作です。
どちらも「Evernote for Windows」のインストールが必須なのですが。
何がモヤモヤしているかというと、どちらもあまりうまくいかないからです。
数年前に、自分の技術系のブログで次のような記事をエントリします。
m0t0k1x2.tumblr.comこのときはなんら困ることなく上手く行っていたのですが、いま手元のWindows10でExcelVBAから実行するとうまくいきません。
COM+がこの操作に必要ですがインストールされていません
なんじゃそれ?と思いつつもわかりません。
PowerShell(32bit版)から次のようにやってもダメです。
$en = New-Object -ComObject "enapi.Evernote"
もしかするとクライアントのバージョンによっては使えなくしたのかもしれません。 公式サポートしているものでもないのに、問い合わせはやたらくる、などの理由でしょうか。
そういうことで、「ENScript.exe」のほうを使ってみることにしたのですが、便利なような不便なような。
ENScriptでノートを追加する
ENScriptはパスを追加しておけばコマンドプロンプトからでもPowerShellからでも、他からでも使うことができます。
ノートを追加する場合はコマンドとして「CreateNote」を指定します。もちろん、Windowsなので全部小文字でもOKです。
enscript createnote /u username /p password /i note-title /s filepath
こんな感じで、指定したユーザー名、パスワードを使ってノートを追加します。
なお、/i
に半角スペースを続けてノートのタイトルを、/s
に続けてノートに添付するテキストファイルを保存パスで指定します。
また、ノートを追加したいノートブックを指定するには/n
に続けてノートブック名を、タグをつけたいときは/t
に続けてタグ名を指定すればいいです。
さらに、ユーザー名とパスワードは省略したほうがいいでしょう。 というのも、省略しないと目に見える状態で入力することになりますし、省略するとENScriptが保存されているユーザー名とパスワードを使って良きようにとりはからってくれるからです。
ノートブック名も標準のノートブックを指定しているなら省略して構いません。
ということで、普通は次のようになります。
enscript /i note-title /s C:¥file¥path
簡単でしょう。
しかしここでもうまくいかないことがあってモヤモヤするのです。
/s
にファイルパスを指定しないときは、標準入力から読み取ってノートのコンテンツにしてくれるという機能があります。
これを利用して、コマンドラインからノートに追加したいなーと思ったら次のようにすれば万事解決!と踏んだのですが…
踏んだのは罠だった
コマンドラインからテキストをノートのコンテンツにするなら、次のようにします。
まずはコマンドプロンプトから。
echo "日本語でおk" | enscript /i sample /s
次はPowerShellから。
"日本語で" | enscript /i sample /s
これがすべて文字化けになります。 Windowsはおろか、Mac版のクライアントでも、iOS版のクライアントでも、です。
しかし次のように日本語を含まない場合は文字化けしません。
"this is my text." | enscript /i sample /s
なんでやねん。
日本語がうまく解釈されていない?
文字コード問題だと思い、コマンドプロンプトをUTF-8という文字コードに変更してからやってみました。 次のようにすればUTF-8にすることができます。ただし、日本語入力できなくなってしまいますが…
chcp 65001
結果はもちろんダメで、化けてます。
次に試したのはPowerShellで文字コードを変更してみましたが、これもダメでした。 ファイルから読み込んだものを、というのもダメでした。
しかし、日本語ファイル名を指定しても、ノートタイトルに日本語を指定してもどちらも文字化けしません。 最後の手段で標準入力に渡すテキストをHTMLにもしてみましたが、ダメでした…
何が気に入らないのか
メモ的にテキストでノートのコンテンツへ入れたかったのですが、ファイル添付が基本のようです。
ちょっとしたことなんですけど、なんか作ったほうがいいのかな… と思いつつも、それだけのためになーと思うので、こういう用途にはOneNoteを使おうかと検討を始めたところです。
OneNoteだとCOM呼び出しはExcelなんかと同じで次の感じです。 XMLの操作になってしまいますけどね…
VBAだと
Dim on As New OneNote.Application
VBSだと
Dim on
Set on = CreateObject("OneNote.Application")
$on = New-Object -ComObject "OneNote.Application"
あ、PowerShellからだとReleaseComObjectで解放しましょう。 起動したままになってしまいますので。
[System.Runtime.InteropServices.Marshal]::ReleaseComObject($on)
できるポケット Evernote 基本&活用ワザ 完全ガイド
- 作者: コグレマサト,いしたにまさき,堀正岳,できるシリーズ編集部
- 出版社/メーカー: インプレス
- 発売日: 2014/04/25
- メディア: Kindle版
- この商品を含むブログ (2件) を見る
Evernote豆技50選 (Espresso Books)
- 作者: 倉下忠憲
- 出版社/メーカー: 倉下忠憲
- 発売日: 2015/03/29
- メディア: Kindle版
- この商品を含むブログ (3件) を見る