AppleScriptでEvernoteを操作する 第五回

さて、前回一通り紹介したcreate noteを使って、より実用的なスクリプトを書いてみましょう。今回で、ぐぐっとプログラムっぽくなるはずです。

メモ作成

create noteを使えば、自動的にノートが作成できるのはよいとして、その中身が常に一定ではさほど意味はありません。ノートの内容を、あらかじめスクリプト内に記述しておくのではなく、何らかのデータ処理を行って動的に作成したいところです。

で、まず思い浮かぶのが、「メモ作成ツール」です。たとえば、ダイアログが表示されてそこにテキストを入力する。入力されたテキストを利用してノートを作る。こういう感じの動作なら、いかにもプログラムっぽいですね。

というわけで、実際に一番シンプルな形で書いてみましょう。

set myAnswer to display dialog "メモを入力してね!" default answer ""
set memoTxt to text returned of myAnswer

tell application "Evernote"
	create note with text memoTxt
end tell

上記のコードをスクリプトエディタに書き込み、コンパイル後実行してみてください。

問題がなければ、以下のようなダイアログが表示され、

適当に入力してOKを押せば、

Evernoteにノートが作成されているはずです。

おお〜〜〜。ちょっとアプリっぽい感じがしませんか。ただ、あまりにも機能は貧弱で、ノートタイトルなんかも「無題」のままなので、これから改良していきたいところですが、その前に、今回初登場したコードを少しだけ解説しておきましょう。

default answer

コードの一行目には、見慣れない二つの記述が出てきます。一つ目はset、もう一つはdefault answerです。まずは後者からいきましょう。

一行目の途中に出てくる display dialogについては第二回で紹介しました。言葉通り、ダイアログを表示するコマンドです。で、このダイアログはなかなかイケてるやつで、今回のようにテキストフィールドを表示させることもできます。その際に使うのが、このdefault answerコマンド。普通に解釈すれば、「既定の答え」という意味で、それを何も指定しない(空白を指定する)ことで、空っぽのテキストフィールドを表示させている、というわけです。

逆に言えば、default answer “お前はもうメモしている” などと書けば、ダイアログのテキストフィールドにはあらかじめその文字列が表示されることになります(気になる方はコードを書き換えて試してみましょう)。

set

上記のダイアログによって、ユーザーからの入力を受け取ることはできました。しかし、そのままだと、それを後々利用することができません。そこで活躍するのがsetです。setは、簡単に言えば、

set a to b

で、「bの内容をaに入れておけ!」となるコマンドです。内容をセーブするわけですね。

まとめると、一行目のコードは、ダイアログを空っぽのテキストフィールドと共に表示して、返ってきた答えをmyAnswerにセーブしておいてね、くらいの意味になります。そして、この行以降は、myAnswerを扱えば、ユーザーからの答えを利用できます。

ちなみに、このmyAnswerが「変数」と呼ばれているもので、その名前はスクリプトを書く人が任意に決定できます。今回はmyAnswerにしましたが、aTextとか、QuantumWordとか、なんだって構いません。ただし、AppleScriptとして使われているtellやsetなどの言葉(予約語)はエラーが出ますので注意してください。
※細かい話が気になる方は「変数」でググってみましょう。

テキスト要素の取り出し

あとはユーザーからの答えを使ってノートを作成したいところなのですが、そのデータを保存したmyAnswerには、テキスト以外の要素もいろいろ含まれています(たとえばどのボタンが押されたか、など)。そこで、myAnswerの中に含まれている、テキスト要素だけをまた別の領域にセーブしておく、というのが二行目のコードです。

set memoTxt to text returned of myAnswer

ほとんど英語をそのまま読めば、理解できるでしょう。memoTxtに、myAnswerに含まれている返ってきたテキストの要素をセットせよ。よって、以降はmemoTxtを扱えば、ユーザーから返ってきた(ユーザーが入力した)テキストが利用できます。

さいごに

ここまでくればあとは簡単ですね。前回までのcreate noteの使い方を合わせれば、memoTxtを内容に指定して、with textでノートを作成すればOKです。create noteを使うために、tell application “Evernote”を宣言するのを忘れないようにしましょう。

さて、非常にシンプルではありますが、これで動的なノート内容の作成が可能となりました。ここからさまざまなアレンジが可能ですが、やることのベースはこのスクリプトにまとまっています。何からの形で処理を行ったデータを用いて、ノートを作成する。あとは、データ処理の方法をいろいろ学んでいくだけです。

次回は、このスクリプトをもう少し改良してみましょう。

▼こんな一冊も:

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

コメントする

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