MacならコマンドラインからEvernoteにノート追加しても文字化けしない
なんとかコマンドラインからサクッとノート追加できないものかなーと思ってEvernoteの公式ドキュメントを眺めていたら、Macの項目もWindowsのすぐそばにありました。
見てみると、AppleScriptでツールを書くことができるようです。
そういうことで、スクリプトエディタにデビューしてみることになりました。
スクリプトエディタで記述する
AppleScriptはMacを自動化するためのスクリプト環境のようです。 公式ドキュメントにもサンプルが載ってます。
こんな感じにすると、ノートを追加することができます。
tell application "Evernote"
create note title "Note 1" with text "Here is my new text note" notebook notebook1
end tell
わたしも詳しくありませんが、「tell application」から「end tell」がVBAなんかでいう「with object」から「end with」みたいなものでしょうかね。
そして命令も独特で、「create note」の部分がメソッドです。 「title」はタイトル、「with text」はコンテンツ、「notebook」はどのノートブックに追加するか、だそうです。
あまりにも普通の英文に見えて、かなり戸惑いました。
JavaScriptでも書くことはできる
ところで、以前にQiitaで見かけたことのある記事を思い出しました。
JavaScriptならもっととっつきやすいのかな…?と要らぬ好奇心が湧いてきたので、もう一度公式ドキュメントを見てみることにしました。
バージョン 1.11.0 の Evernote for Mac クライアントでは、 AppleScriptのサポートを大幅に拡張しています。
あ、ですよね。
と思いつつも調べてみました。
スクリプトエディタは対象となるアプリをライブラリに登録してやると、サポートされているメソッドのドキュメントを読むことができます(英語ですけど)。
まずはスクリプトエディタの「ウィンドウ」>「ライブラリ」からライブラリダイアログを表示してやります。
次に、表示されたダイアログにEvernoteアプリがなければプラスが書かれたボタンをクリックすることで、ファインダーから選択することができます。
ライブラリに追加されたら、本棚っぽいボタンをクリックするとドキュメントビューア的なウィンドウが表示されます。
ドキュメントはメソッドなどの内容をクリックしていくことで閲覧することができます。
ここで、注目すべきは言語選択ができるプルダウンがあるということです。 ここから「JavaScript」を選択することができます。 やった!
実際に書いてみよう
各メソッドの引数にはJSON形式?で渡してやることができます。 ある意味わかりやすいかもしれません。
なにはともあれ、最初はアプリをオブジェクトにします。
var evernote = Application("Evernote");
これでEvernoteの制御をするためのものは変数「evernote」にセットされました。 次はノートを追加します。
そのままのネーミングですが、createNote
メソッドを使います。
タイトルやコンテンツ、それからどのノートブックに追加するかというサンプルを公式ドキュメントから引用してきた内容そのままで書き直してみます。
evernote.createNote({
title: "Note 1",
withText: "Here is my new text note",
notebook: notebook1
});
これでnotebook1というノートブックにノートが追加されます。
Macだと全編UTF-8で統一されているせいか、「withText」に日本語の内容を入れても文字化けしませんでした。
コマンドラインから使いたい
これまたQiitaにあった内容で恐縮ですが、「run」という関数を作ってやることでコマンドラインから引数を与えて実行することができます。
function run(argv){
var title = argv[0];
var content = argv[1];
var evernote = Application("Evernote");
var res = evernote.createNote({
withText: argv[1],
title: argv[0]
});
console.log("OK");
}
ちょっと手抜きですが、1つ目の引数にはノートのタイトルを、2つ目の引数にはメモする内容を指定することにしました。
あら?ノートブックを指定するところを省略していますね。 こうするとどうやらデフォルトに指定されているノートブックに登録されるようです。
あとはこれを保存します。 保存メニューから保存すると、「scpt」という拡張子のファイルになります。 今回は「evernote.scpt」という名前で保存しました。
ではコマンドラインからの実行をやってみます。
osascript -l JavaScript evernote.scpt "this is Title" "日本語でも大丈夫です!"
さきほどファイルに保存したスクリプトファイルを実行するには「osascript」というコマンドをつかって実行します。
続く「-l」は「osascript」にどの言語で実行すればいいかを指示するものになります。 これがWindowsとは違って非常に厳密でして、要するに大文字小文字を区別します。 当たり前なんですけどね…
ですから「JavaScript」としてください。
あとはスクリプトファイル名、そしてそれに与える引数ですね。
さきほどのスクリプトで、「argv」というのがありましたが、これがコマンドラインからスクリプトへ渡ってくる引数になります。
「argv[0]」は引数の1番目という意味になります。 なぜゼロ始まりなのかというと、プログラミング言語ではそうしたケースが多いから、としか言いようがありません…
ということで、与える順番を変えてしまうと内容とタイトルが逆になってしまいます。 この辺りは改善の余地があります。
最後に
もうEvernoteにはMacから、OneNoteにはWindowsから、と割り切ったほうが便利なのかもしれませんが、まだ少し未練がありますね…
蛇足ですが、今回はテキストノートを中心にやってきました。 もちろんURLやHTML、ファイル添付もできますのでご安心ください(?)。
痒いところまで手を伸ばそうと思うと、作り込まれたツールなりアプリなりをつかったほうがよいのかもしれません。 でもショートカット的に使うことができるのはありがたいですね。
AppleScript: The Definitive Guide: Scripting and Automating Your Mac (Definitive Guides)
- 作者: Matt Neuburg
- 出版社/メーカー: O'Reilly Media
- 発売日: 2009/06/30
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 倉下忠憲
- 出版社/メーカー: C&R研究所
- 発売日: 2015/10/22
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 田中拓也
- 出版社/メーカー: SBクリエイティブ株式会社
- 発売日: 2013/04/26
- メディア: Kindle版
- この商品を含むブログを見る