前回は、あらかじめ作成しておいた選択肢から、ユーザーにノートブックを選んでもらうようにしました。
これはこれで便利なのですが、ときには存在するすべてのノートブックから選んでもらいたい場合もあるでしょう。その際、いちいちすべてのノートブック名を入力しておくのは不便ですし、そもそも大抵はどんなノートブックが入っているのかわからないので、これまでのやり方がまったく使えないこともあります。
どうすればいいのでしょうか。
狙いとコード
今回やることは簡単です。
全ノートブックのリストを表示し、そこからユーザーに選択してもらう。コードは以下のように書けます。
tell application "Evernote" set nlist to name of notebooks set selectNotebookName to choose from list nlist repeat with t in notebooks if (name of t) as text = (selectNotebookName) as text then set selectNotebook to t exit repaet end if end repeat end tell
tell application “Evernote”ブロックの中では、notebooksはEvernoteのノートブックの情報を持っています。それを参照すればよいわけですが、ここではそのうちのnameプロパティにアクセスしています。
2行目のコードは、簡単に言えば、nlistという変数に、全ノートブックの名前を入れてね、という命令です。
そして3行目で、そのリストからユーザーに選択してもらうダイアログを表示し、その結果をselectNotebookNameに保存します。
これで一件落着かというと、selectNotebookNameに入っているのはあくまで「ノートブックの名前」であって、ノートブックそのものの情報ではありません。ノートブックに対して何らかの操作を行う場合は、むしろその情報が必要となります。
そこで、selectNotebookNameに入っているノートブックの名前から、そのノートブックの情報を探します。他にもいろいろやり方はあるかと思いますが、ここで行っているのは、notebooksの中から一つひとつ要素(ノートブック情報)を取り出し、そのnamaと、selectNotebookNameを比較して、それが同じであれば、その取り出したノートブック(の情報)をselectNotebookに格納する、というものです。
イメージ的に言うならば、左手に商品名が書かれたラベルを持ち、箱の中から一つひとつ商品を取り出していって、ラベルと同じ商品名のものがあればそれを別の箱に入れて確保する、というようなことです。
ちなみに、もし適合するものがあれば、以降の比較作業は必要なくなるので、exit repaet によって繰り返しを抜けるようにしてあります。
前回の話と絡めれば、指定したノートブックから検索したい場合は、単にselectNotebookNameの情報を利用して、find notes コマンドを使えばOKです。選択したノートブックに対して操作する場合は、selectNotebookを使いましょう。
Next Step
これで、新規ノートの作成、ノート情報の取得、ノートの検索、ノートブック情報の扱いまでができるようになりました。省力化に関しては、これでかなりの部分がカバーできるでしょう。
次回は、ノートの中身情報の扱いについて見ていきます。
▼こんな一冊も:
売り上げランキング: 202
シーアンドアール研究所 (2016-02-26)
売り上げランキング: 210,843