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

前回は、ifを使って、「Aという状況なら〜〜したいが、それ以外の状況なら○○したい」という条件分岐を導入しました。これで、「タグをつける場合」と「タグをつけない場合」の枝分かれが実現できたわけです。

今回はさらに複雑な枝分かれを実装してみましょう。

狙いとコード

前回では、”着想”, “タスク”, “資料”, “タグなし”の四項目をリストで提示し、前三つに関してはタグをつけ、最後の一つについてはタグをつけない処理をしました。では、前三つはタグをつけ、しかも、そのうちの「資料」については、ノートブックを指定する、という処理ならどうでしょうか。もちろん、「タグなし」はこれまで通りタグをつけないとします。

少しまどろっこしいですが、たとえばこんな書き方ができます。

set taglist to {"着想", "タスク", "資料", "タグなし"}

set myAnswer to display dialog "メモの内容を入力してね!" default answer "" & return & return & return & return
set memoTxt to text returned of myAnswer
set memoTitle to paragraph 1 of memoTxt

set applyTag to (choose from list taglist) as text

tell application "Evernote"
	
	if applyTag is equal to "タグなし" then
		create note title memoTitle with text memoTxt
	else if applyTag is equal to "資料" then
		create note title memoTitle notebook "500 [スクラップ]" tags applyTag with text memoTxt
	else
		create note title memoTitle tags applyTag with text memoTxt
	end if
	
end tell

注目したいのは、13行目のelse if applyTag is equal to “資料” thenです。前回はelse だけの構文を紹介しましたが、今回はそのあとにまたifが登場しています。これにより、「もしAの状況であれば、〜〜の処理をし、Bの状況であれば、○○し、そのどれでもなければ××し」という分岐が可能になっています。このelse if は複数接続可能なので、条件による分岐はいくらでも増やしていけます。

入れ子状の構造

あるいは、こういう書き方も可能です。

set taglist to {"着想", "タスク", "資料", "タグなし"}

set myAnswer to display dialog "メモの内容を入力してね!" default answer "" & return & return & return & return
set memoTxt to text returned of myAnswer
set memoTitle to paragraph 1 of memoTxt

set applyTag to (choose from list taglist) as text

tell application "Evernote"
	
	if applyTag is equal to "タグなし" then
		create note title memoTitle with text memoTxt
	else
		if applyTag is equal to "資料" then
			create note title memoTitle notebook "500 [スクラップ]" tags applyTag with text memoTxt
		end if
		create note title memoTitle tags applyTag with text memoTxt
	end if
	
end tell

今度はelseの後ろではなく、elseのブロックの中にif文が入っています。このようにif文は入れ子状にすることもできます。若干コードがわかりにくくなっているかもしれませんが、やっていることは、「もし〜だったら」を積み重ねているだけです。そして、これでかなり複雑な処理が書けるようになります。

たとえば、もし「タグなし」以外のものが選ばれたときは、さらにリストを示し、そこからノートブックを選んでもらって、それぞれのノートをそこに保存する、ということも可能になります。

if文とその条件式は、さまざまな書き方が可能ですので、上記が唯一の正解というわけではありません(むしろ冗長すぎるくらいです)。その辺は、実際にいろいろ書いて試してみてください。一例を挙げれば、最初の条件判断をapplyTag is equal to “タグなし” ではなく、applyTag is not equal to “タグなし” として、「選ばれたタグが、〈タグなし〉でなかったら」というような書き方もできます。こう書くと、それ以降に続く処理も書き方が変わってきますね。こういうのを考えるのが好きな人はプログラミングに適正があるように思います。

next step

さて、先ほども書いたとおり、else if は複数接続できるので、リストの項目一つごとに別の処理を割り当てることもできます。が数が多い場合は、else if else if else if ……と若干うっとうしさが増してしまうので、それとは違う式の書き方も覚えておきましょう。それについては次回紹介します。

[2017年10月21日 11:38 追記
うろ覚えで、case文があったような気がしたのですが、まったく全然存在しなかったのでこの話はここまでです。次回は別の切り口のツール作りについて書きます。]

▼こんな一冊も:

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

コメントする

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