Archive for the 'Database Events' Category

2008/05/03 Database Eventsを起動して、オープン中のDBを数える

Database Eventsの起動方法(launch)と、オープン中のデータベースを数える方法、そして「Database Eventsがデータベースをオープンするには少々時間がかかる」ということを理解するためのサンプルです。アプリケーションのスクリプティングを行うための基本ともいえる確認内容ではありますが、「ああ、Database Eventsって命令を非同期実行するわけじゃないんだ」とか「データベースのオープンだけは非同期実行なんだ」とか「データベースをオープンしても、完全にオープンし終わるまで待ってあげないといけないんだ」といったことが分ってくるわけです。

スクリプト名:Database Eventsを起動して、オープン中のDBを数える
tell applicationDatabase Events
  launch
  
set dbRes to count every database
  
if dbRes is not equal to 0 then
    tell database 1
      set aRes to properties
      
    end tell
  end if
end tell

▼新規書類に ▼カーソル位置に ▼ドキュメント末尾に

2008/05/03 Database Eventsで、既存のDBを指定してオープンする

Database Eventsで、既存のデータベース(Database Eventsで作成したもの)を指定してオープンするサンプルです。データベースのファイルパスはPOSIX pathで指定しておく必要があります。このあたり、Mac OS X上にのっているApple純正アプリケーションでも統一がとられておらず、もうちょっとなんとかならないのかと不満を覚えるところです。

スクリプト名:既存のDBを指定してオープンする
既存のDBを指定してオープンする
set dbPath to choose file

tell applicationDatabase Events
  try
    close every database
  end try
  
open database (POSIX path of dbPath) –POSIX Pathで渡さないとオープンできない
  
repeat
    set dCount to count every database
    
if dCount is not equal to 0 then exit repeat
    
delay 1
  end repeat
end tell

▼新規書類に ▼カーソル位置に ▼ドキュメント末尾に

2008/05/03 Database Eventsで、すべてのDBをクローズして終了

Database Eventsは単にquit命令で終了させた場合とかquit delayで自動終了した場合でも、それまでにオープンしていたデータベースをクローズしてくれるわけではありません。任意の処理が終了したらデータベースはその都度クローズしておくのがセオリーです。

スクリプト名:すべてのDBをクローズして終了
tell applicationDatabase Events
  close every database
  
quit
end tell

▼新規書類に ▼カーソル位置に ▼ドキュメント末尾に

2008/05/03 Database EventsのQuit Delayを指定

Database Eventsは、GUIなしアプリケーションであり、そのうえ起動してもDockにアイコンが表示されません。AppleScriptからquit命令を発行して明示的に終了させる方法が用意されているほか、指定時間(単位:秒)の間なにもDatabase Eventsに対して命令が出されない場合には自動終了するよう指定しておくことができます。それが、「quit delay」です。quit delayに0を指定した場合には、自動終了は行われません。

スクリプト名:Database EventsのQuit Delayを指定
tell applicationDatabase Events
  set quit delay to 3600単位:秒
end tell

▼新規書類に ▼カーソル位置に ▼ドキュメント末尾に

2008/05/03 Database Eventsを終了する

Database Eventsを終了します。

スクリプト名:Database Eventsを終了する
tell applicationDatabase Events
  quit
end tell

▼新規書類に ▼カーソル位置に ▼ドキュメント末尾に

2008/05/03 Database Eventsでパスを指定してDBを作成する

よそで見かけたScriptを日本語環境で動くかどうか、日本語のデータを入れて動作確認したものです。

デスクトップに「スーパーヒーロー2」という名前のデータベースファイルを作成し、リストの内容をデータベースに格納します。

Datanase Eventsは「ソートができない出来損ないのデータベース」ととらえることも可能ですが、その一方で……AppleScriptの各種フィルタ参照でアクセスできる便利なストレージでもあり、リスト型変数だけでは行えないデータ抽出を自由に行える「器」ともいえます。

ソートに関しては自力でAppleScriptのサブルーチンを用いれば行えるため、まずはメリットを最大限に活用したほうが得策かもしれません。

スクリプト名:パスを指定してDBを作成する
パスを指定してDBを作成する

set theSuperHeroes to {{”バットマン“, “ブルース・ウェイン“}, {”スパイダーマン“, “ピーター・パーカー“}, {”スーパーマン“, “クラーク・ケント“}}
tell applicationDatabase Events
  set theDatabase to make new database with properties {name:”スーパーヒーロー2“, location:path to desktop from user domain}
  
tell theDatabase
    repeat with a from 1 to length of theSuperHeroes
      set theCurrentSuperHeroInfo to item a of theSuperHeroes
      
set theRecord to make new record with properties {name:item 1 of theCurrentSuperHeroInfo}
      
tell theRecord
        make new field with properties {name:”正体“, value:item 2 of theCurrentSuperHeroInfo}
      end tell
    end repeat
  end tell
end tell

▼新規書類に ▼カーソル位置に ▼ドキュメント末尾に