前回は、タグを選択するダイアログを表示し、その結果に応じてノートにつけるタグを変える機能を追加しました。
今回は、そこに「タグをつけない」という選択を追加してみましょう。登場するのは条件分岐です。
狙いとコード
やりたいことは、ある選択においてはタグをつけ、別の選択においてはタグをつけない、という処理です。
そのような処理は、たとえば以下のように書けます。
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 create note title memoTitle tags applyTag with text memoTxt end if end tell
前回との違いは、まず選択肢の「記録」が「タグなし」になっていること。これはわかりやすく強調したもので、「記録」のままでも別に構いません。ともかくこの四番目の選択肢を選んだときだけは、他とは違いタグをつけないようにします。
次に、set applyTag to (choose from list taglist) as text の行の最後にas text が追加されています。これはおまじないのようなものなのですが、意味としてはそのまま「テキストとして扱え!」となります。興味ある方はこのas textだけ削除してコードを動かしてみてください。
最後にノート作成の部分がややこしくなっています。重要なのは、 if applyTag is equal to “タグなし” then の箇所。これも英語をそのまま読めばOKで、「もし、applyTagの中身が、”タグなし”に等しいのであれば、」という意味で、その仮定(if)にマッチする場合のみ、下の行が実行されます。この場合は、create note title memoTitle with text memoTxt です。
さらにその次の行のelseは、「そうでなければ」となって、最初に提示した仮定にマッチしないのなら、その下の行が実行されます。そして最後のend if でこの仮定全体が終了します。
つまり、流れはこうです。まず最初にapplyTagの中身が”タグなし” が等しいかを確認する。等しければ create note title memoTitle with text memoTxtを実行し、等しくなければ create note title memoTitle tags applyTag with text memoTxtを実行する。この場合、二つの行の違いは、タグを当てているかどうかだけなので、結果もタグの有無の違いとして出てきます。
実際にコードを動かしてみると、
無事タグのついていないノートを作成することができました。
仮定の書き方
条件分岐について書き始めるとキリがありませんので、詳しく知りたい方は以下のページをどうぞ。
鳶嶋工房 / AppleScript / 入門 / インテリジェントでいこう
とりあえず押さえておきたいのは、今回使用した is equal to は is や = に書き換えても同じ、という点。つまり、以下の書き方はどれも同様に機能します。
if applyTag is equal to “タグなし” then
if applyTag is “タグなし” then
if applyTag = “タグなし” then
自分にとってわかりやすい書き方を選んでください。
next step
このif文はディープであり、うまく使えるようになるとプログラミングの基本みたいなことはほとんどOKになるのですが、細かい話は多いので、必要に応じて紹介していくことにします。まずは、このシンプルな形を覚えてください。
次回は、このif文を使ってもう少し複雑な処理を導入してみます。
▼こんな一冊も:
シーアンドアール研究所 (2016-02-26)
売り上げランキング: 126,144
売り上げランキング: 100
コメントを残す