それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

インタラクティブシェル (JavaScript for OSX )

Js書いてると 一行ずつ実行したくなります。

プログラムには、一行ずつ実行する手法が用意されている。

など

JavaScript for OSX Automation にもあります

対話型コンソールはありまぁぁぁす!

osascript -i -l  JavaScript

osascript コマンドに -i 引数をつければインタラクティブシェルが起動します。

スクリーンショット 2014-12-10 4.26.48

インタラクティブシェルは便利!

シェルがあると、トライ・アンド・エラーがスゴく楽になります。

>> ^Dtakuya@rena:~/Desktop$ osascript -i -l  JavaScript
>> var Safari = Application("Safari")
=> undefined
>> Safari.windows
=> Application("Safari").windows
>> Safari.windows[0]
=> Application("Safari").windows.at(0)
>> Safari.windows[0].tabs
=> Application("Safari").windows.at(0).tabs
>> Safari.windows[0].tab[0]
=> Application("Safari").windows.at(0).tab.0
>> Safari.windows[0].tab[0].name
=> Application("Safari").windows.at(0).tab.0.name
>> Safari.windows[0].tab[0].name()
!! Error on line 1: Error: Can't convert types.
>> Safari.windows[0].tabs[0].name()
=> "Twitter / 電話番号を入力してください"
>>

これは、Applicationの階層構造を一つ一つ降りて行って、どのオブジェクトどう使うのか調べいるところす。

osascript について

osascriptはコマンドラインから、applescriptを実行するコマンドです。JavaScriptにも対応しました。

AppleScriptインタラクティブシェルを起動するとき

osascript -i 

JavaScriptインタラクティブシェルを起動するとき

osascript -i  -l JavaScript

他にも、ファイルを名を指定して実行したり

osascript  -l JavaScript test.js

標準入力からスクリプトを受け取ったり

cat test.js osascript  -l JavaScript 

ワンライナーっぽくかけたり

osascript  -l JavaScript  -e "var app = Application('Safari'); app.activate()"

などなど、osascriptは結構使えます。

osjscript 書きました。

" osascript -l JavaScript -i "はパパっと書くにはあまりにも長い。だからコマンド作った

  • パイプで渡されたら、パイプで実行
  • ファイルが指定されたら、ファイルを実行
  • それ以外はインタラクティブ・シェルを起動

gist7f66bf50c3e66c8bf4d2

みんな大好き man pages