AppleScriptでEvernoteを操作する 第十五回

前回は、検索を使ってノートの情報を取得してみました。キーワードを指定することで、ノートブックやタグを限定することも可能です。

ただし、前回では検索キーワードは固定されていました。それを選択できるようにするのは、どうすればいいでしょうか。

狙いとコード

前回では、あらかじめ検索するノートブックの名前をコードに埋め込んでいました。だから、コードを何度実行しても同じノートブックが検索されます。では、それに柔軟性を持たせるにはどうすればいいでしょうか。

  • 複数のノートブックの選択肢を用意しておき、そこから選んでもらう
  • ノートブックリストの一覧を表示し、そこから選んでもらう
  • ユーザーにノートブック名を入力してもらう

上記の三つが考えられますが、三番目については「ユーザーがノートブックの名前を正確に覚えている」という前提が必要で、その前提は来年日本から大型の油田が発見される程度には望み薄なので避けておいた方がよいでしょう。というわけで、今回はまず一つ目の方法でやってみます。

コードは以下のようになります。

set targetNotebookList to {"001 [inbox]", "002 [project/now-week]", "003 [day/stock]"}
set targetNotebook to (choose from list targetNotebookList) as text

tell application "Evernote"
	
	set resultNote to find notes "notebook:\"" & targetNotebook & "\""
	repeat with i in resultNote
		--ノートに対する処理をここに書く
	end repeat
	
end tell

簡単ですね。まず選択肢として上げたいノートブック名をリスト(配列)で指定しておき、あとはそのリストからユーザーに選んでもらい、その答えを使ってfind notesを走らせる、というものです。

これを少しアレンジすれば、ノートブックを選択してもらい、さらに検索のキーワードも入力してもらう、なんてこともできます。つまり「〜〜ノートブックから▼▼▼というキーワードが入ったノートを探す」というようなことですね。

コードとしては以下です。


set targetNotebookList to {"001 [inbox]", "002 [project/now-week]", "003 [day/stock]"}
set targetNotebook to (choose from list targetNotebookList) as text

set myAnswer to display dialog "検索のキーワードを入力してね!" default answer ""
set memoTxt to text returned of myAnswer


tell application "Evernote"
	
	set resultNote to find notes "notebook:\"" & targetNotebook & "\" " & memoTxt
	repeat with i in resultNote
		--ノートに対する処理をここに書く
	end repeat
	
end tell

これも難しくありません。ここまで紹介してきた知識で書けます。ダイアログを表示し、ユーザーに入力してもらったテキストを使い、find notesを走らせる。これだけです。

ただし、この場合、キーワードによってはノートが一つも見つからないこともあり、そうしたときに別の処理を行いたいなら以下のように書けます。

set targetNotebookList to {"001 [inbox]", "002 [project/now-week]", "003 [day/stock]"}
set targetNotebook to (choose from list targetNotebookList) as text

set myAnswer to display dialog "検索のキーワードを入力してね!" default answer ""
set memoTxt to text returned of myAnswer

tell application "Evernote"
	
	set resultNote to find notes "notebook:\"" & targetNotebook & "\" " & memoTxt
	if length of resultNote ≥ 1 then
		repeat with i in resultNote
			--ノートに対する処理をここに書く
		end repeat
	else
		display dialog "ノートはありません"
	end if
	
end tell

途中までは同じで、ノートの処理に入る前にif文が一つ追加されています。 length of resultNote は resultNoteに入っている要素の数を返すもので、それが1よりも大きいならノートの処理を行い、そうでなければ別の処理を行う、という進行になっています。

Next Step

だんだんと新しい知識を使わなくてもコードが書けるようになってきました。こうなってくると俄然プログラミングは楽しくなってきます。

さて、今回はあらかじめノートブックのリストを設定していましたが、そのとき存在するすべてのノートブックから選んで欲しいときはどうすればよいでしょうか。それについては次回に。

▼こんな一冊も:

Evernote豆技50選 (Espresso Books)
倉下忠憲 (2015-03-29)
売り上げランキング: 288
ズボラな僕がEvernoteで情報の片付け達人になった理由
倉下 忠憲
シーアンドアール研究所 (2016-02-26)
売り上げランキング: 135,855
Related Posts with Thumbnails
Send to Kindle
Rashita
物書きをやっております。実用書から小説までなんでもござれのハイブリッド物書きです。 ライフハックや仕事術、知的生産などに興味があります。

コメントする

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