最終更新日:2012/06/16
ASEverHelper - Evernoteに保存したAppleScriptをAppleScript エディタに挿入するAppleScript
ASEverHelperとは?
自分がAppleScriptを書くときは一つのスクリプトファイルに全部のハンドラを書いています。理由に配布する時にこれだとその一つのスクリプトをダウンロード、実行すればいいので使う人にとって楽そうだからというのがあります。(あと、スクリプトの分割について知らないというのもあります・・・)。
で、一つのスクリプトファイルに他からハンドラをコピペしているのですが、結構めんどくさくてかなり前からどうにかならないかと思っていたのですが、とあるアプリケーションのチュートリアルを見ていて、my hoge(123)
のように使用したハンドラの本体を自動的に挿入できれば便利になるんじゃないかと思いました。最近はよく使うハンドラの管理にEvernoteを使っているのですが、EvernoteはAppleScript対応なのでどうにかなるかもしれないのでやってみようということでやってみました。
ハンドラの本体の挿入以外にもタグやプレフィックスでハンドラの呼び出す部分を挿入できるようになってかなりいいかも!と思っています。
映像で見る動作の流れ
最初にEvernoteにタグを付けたハンドラのノートを作ります
ASEverHelperを使ってAppleScript エディタに挿入してみます。
VIDEO
開発、テスト環境
Mac OS X 10.6.8
AppleScript エディタ バージョン 2.3 (118) AppleScript 2.1.2
Evernote バージョン 3.1.2 (257203)
rubycocoaを使っていますが、10.7でちゃんと動くかどうかは確認していません。
準備、設定
スクリプトの変更方法
スクリプトは普通の.scptにして適当なソフトで実行しても良かったのですが、他のソフトが無くてもショートカッキーを付けて実行できるように、ServiceAppleScript に入れて、サービスメニューから実行できるようにしました。.appをAppleScript エディタで開くとスクリプトを見たり、変更できます。
ASEverHelperすべてにある設定
theNoteBookNameでAppleScriptを保存するノートブック名を指定します。デフォルトでは「AppleScript」です。
AppleScript Editorのテキストの色の設定で「コメント」と「変数およびサブルーチン」の色を他で使われていない色にします。
ASEverHelper - Insert Not Exists Handler.appの色の設定。
初期値はAppleScript エディタのデフォルト値ですが自分で変更している人はここを変更しないと動きません。
property varAndSubroutineColor : {16383, 32767, 0}
property commentColor : {19660, 19960, 19960}
を「ASEverHelper - Copy varAndSubroutineColor.scpt」を実行してクリップボードにコピーされた自分の色にする。
「ASEverHelper - Save To Evernote」をサービスメニューに表示する
「ASEverHelper - Save To Evernote」はテキストを対象にしたサービスメニュー項目ですがデフォルトでは表示されないので、システム環境設定で表示されるようにします。
サービスメニューにショートカットキーを付けて実行しやすくする
アプリケーションはすべてサービスメニュー項目なのでシステム環境設定で自分にあったショートカットキーをつけましょう。
このサービスメニュー項目はAppleScript エディタだけで表示されます。
対応しているハンドラの書き方
AppleScriptのハンドラにはいろいろな書き方がありますが、対応している書き方は次の()で囲む書き方のみです。
on hoge( foo, bar )
準備:EvernoteにAppleScriptを保存
ノートはノートブック「AppleScript」に保存して下さい。
AppleScriptエディタでEvernoteに保存したいスクリプトのテキストを選択して、「ASEverHelper - Save To Evernote」を実行するとEvernoteに保存します。ハンドラ名が見つかれば、ノートの名前にします。無ければ1行目が名前になります。保存後Evernoteに表示されるのでタグを付けて確認して下さい。タグにはプレフィックス"AS_"を付けてください。
AppleScript エディタからコピペでEvernoteに貼付けるとスペースが消えてしまって、スクリプトが動かなくなる場合がありました。
基本は下記画像の用にそのままハンドラを保存すればOKです。タグにはプレフィックス"AS_"が付いています。
ハンドラ以外にもサンプルやテスト用のスクリプト、それらを実行するのに必要な他のハンドラがある場合は次の様に特定の文字で区切って書きます。
「ASEverHelper - Insert <<<StartOtherHandler>>>」、「ASEverHelper - Insert <<<EndSampleScript>>>」で挿入できます。
これは片方だけでもOKです。
verにはバージョンを書きます。書式は「ver.YYYY.MM.DD.NN」です。これの.を除いた数値を比較してハンドラが新しくなっていないかチェックします。ASEverHelper - Insert Date Versionで今日のバージョンを挿入できます。NNは同じ日に何度も更新した用です。
使い方:挿入する方法
ハンドラの本体を挿入
スクリプトをコンパイルしてから(色分けされてから)「ASEverHelper - Insert Not Exists Handler」を実行します。
タグやハンドラ名のプレフィックスからハンドラの呼び出し部分を挿入
AppleScript Editorでタグやプレフィックスを入力して「ASEverHelper - Insert By Prefix」か「ASEverHelper - Insert By Tag」を実行します。
ポップアップメニューが表示されるので選ぶと挿入されます。
入力カーソルから手前のスペースと改行がでるまでの文字が対象になります。
挿入されるハンドラはノートの中の一番上のハンドラになります。ハンドラが無い場合はノート全体が挿入されます。
タグやノート名のプレフィックスからノート全体を挿入
呼び出し部分だけじゃなくてノート全体を挿入したい場合はノートにタグ「AS_template」を付けます。
使い方まとめ
挿入するハンドラの準備
AppleScript エディタでハンドラを書きます。
ハンドラのバージョンをon handlerName()の次の行に「ASEverHelper - Insert Date Version」で挿入します。
ハンドラの使い方のサンプルは「ASEverHelper - Insert <<<EndSampleScript>>>」で区切り文字を入れたハンドラの上に書きます。
ハンドラの実行に必要な他のハンドラは「ASEverHelper - Insert <<<StartOtherHandler>>>」で区切り文字を入れたハンドラの下に書きます。
保存するスクリプトを選択して「ASEverHelper - Save To Evernote」を実行してEvernoteにAppleScriptを保存します。
ノートにタグを「AS_」のプレフィックスを付けて付けます。AS_list、AS_textなどです。
ノートのタグにAS_templateを付けると「「ASEverHelper - Insert By Prefix」」「ASEverHelper - Insert By Tag」で挿入時にハンドラの呼び出し部分じゃなくてノート全文を挿入します。
呼び出し部分や本体の挿入
AppleScript エディタで挿入したいハンドラの先頭数文字を打ち、「ASEverHelper - Insert By Prefix」を実行すると、打ち込んだ文字から始まるノートがポップアップメニューで表示され、選択すると、ハンドラの呼び出し部分が挿入されます。
タグで前記処理をしたい場合は、「ASEverHelper - Insert By Tag」を実行します。
スクリプトの本体を挿入するにはコンパイルしてから「ASEverHelper - Insert Not Exists Handler」を実行します。
Tips
Evernoteに保存したハンドラを修正、更新するにはEvernoteでテキストを選択してサービス「新規 AppleScript を作成」を実行すると簡単にAppleScript エディタにスクリプトが貼付けられます。その後、修正したら「ASEverHelper - Save To Evernote」で以前付けたタグはそのままで内容だけ更新できます。
コメント
0.5.0
今更だけど、すごい便利になった気がします。ハンドラを探してコピペする必要が無くなりました。
でも、こんなことをしていないで、XModules とかを使って、よく使うスクリプトを一元管理してスクリプトを読み込むようにした方がいいのかもしれませんが・・・。
メモソフトをMailのメモから乗り換える時にEvernoteがAppleScript対応なので選んだのですが、やっぱりAppleScript対応だと何かと便利だと思いました。
ダウンロード
ASEverHelper0.5.zip
だいたいできた