スクリプトの作成 4


 では次に、表示する内容をユーザから指定できるようにしてみましょう。

 ここではファイル名と作成日のどちらを表示するかボタンで選択するダイアログを考えます。

 まず、「ファイル名」と「作成日」の二つのボタンを持つダイアログを表示するには次のように書きます。


  display dialog "表\示する内容を選んで下さい。" buttons {"ファイル名","作成日"}


  註)「表」という文字の後に「\」という文字を付けるのは、「表」のアスキー番号が「149:92」で、二文字目が「\」と同じだからです。詳しくはTipsを参照して下さい。

 これを実行するとボタンが2つあるダイアログが表示されますが、このままではどちらのボタンも同じ枠になってしまいます。ボタンの枠を太くするには、「default button "作成日"」または「default button 2」とすればいいでしょう。

  display dialog "表\示する内容を選んで下さい。" buttons {"ファイル名","作成日"} default button 2

 この命令を実行してボタンを押すと、「{button returned:"作成日"}」という結果が得られます。これは項目が一つだけのレコードで、

  button returned of {button returned:"作成日"}

 とすれば「"作成日"」が得られます。

 では、押されたボタンに従って処理を変更するスクリプトを書いてみましょう。

 条件によって処理を変更するには、条件文を用います。この例ではボタンの返値が「作成日」と「ファイル名」の二つなので、

  display dialog "表\示する内容を選んで下さい。" buttons {"ファイル名", "作成日"} default button 2

  set ButtonRes to button returned of result
  if ButtonRes is "作成日" then
    (作成日の処理)
  else
    (ファイル名の処理)
  end if

 とすればいいと思います。

 条件の部分は「ButtonRes = "作成日"」「(ButtonRes is not "ファイル名")」等でも構いません。

 後は処理の部分に、前のページで作った表示のためのスクリプトを書き込むだけです。

  display dialog "表\示する内容を選んで下さい。" buttons {"ファイル名", "作成日"} default button 2

  set ButtonRes to button returned of result
  if ButtonRes is "作成日" then
    set theFile to (choose file with prompt "ファイルを選んで下さい")
    set FileInfo to (info for theFile)
    display dialog (creation date of FileInfo) as string
  else
    set theFile to (choose file with prompt "ファイルを選んで下さい")
    set FileInfo to (info for theFile)
    display dialog name of FileInfo
  end if

 一応このままでも動作しますが、スクリプトに重複する部分が多いですよね。違うのはダイアログの表示だけですから、次のように書いた方が楽です。

  display dialog "表\示する内容を選んで下さい。" buttons {"ファイル名", "作成日"} default button 2

  set ButtonRes to button returned of result
  set theFile to (choose file with prompt "ファイルを選んで下さい")
  set FileInfo to (info for theFile)
  if ButtonRes is "作成日" then
    display dialog (creation date of FileInfo) as string
  else
    display dialog name of FileInfo
  end if

 これで、実用性はないながらも立派に動作するスクリプトが完成しました。

サンプルのダウンロード

次へ進む

AppleScriptの使い方に戻る
このホームページに関するお問い合わせは、karino@drycarbon.comまで。