メインコンテンツまでスキップ

SenseTalkスクリプティングにおけるユーザーとの対話

実行時に情報を求めるSenseTalkスクリプトを作成することができます。以下のコマンドは、情報の表示や要求によりSenseTalkスクリプトがユーザーと対話することを可能にします。

answer

それが何をするか

メッセージと最大3つのボタンを含む簡単なモーダルパネルを表示します。ユーザーがクリックしたボタンのタイトルを変数itに返します。

それを使用するタイミング

モーダルパネルで短いから中程度の長さのメッセージを表示したり、ユーザーから二つまたは三つの異なる選択肢の形で入力を求める必要があるときに、answerコマンドを使用します。

answerコマンドは、ユーザーがyes/noやcontinue/cancelのような決定をする必要がある状況に最適です。より複雑な選択肢については、askコマンドを使用します。

answer "Great! You got " & pctRight &"% correct!"

answer "Go on?" with "Yes" or "No" title "DECIDE"

answer "How do you feel?" with "Great!" or \
"Okay" or "Really Lousy" title "Greetings!"

例:

answer "Account" from list the unique items of myListOfChoices

例:

answer "What would you like to drink?" from list ["Coffee", "Tea", "Beer", "Water"] allow multiple default "Coffee"

Syntax

answer {panelType} {Options}

Options:

{prompt | body | message}
prompt
with reply1 {or reply2 { or reply3 {or reply4}}}
[title | titled] titleExpr
[timeout | time out ] {after | in} duration
icon iconName
[default {answer} | answer] defaultSelection
{allow} multiple

オプションとしてpanelTypeとして、情報、質問、警告、エラーが指定可能です。各パネルの具体的な実装はホストアプリケーションに任されていますが、通常、関連するアイコンがパネルに表示されます。

promptは、パネルの主要なテキストとして表示される表現される表現の値です。TitleExprは、パネルの上部で大きなフォントで表示されるタイトルです。

Reply1, reply2, reply3,reply4は、パネルの下部にあるボタンに表示されるラベルで、reply1がデフォルトの(最も右の)ボタンです。表示されるボタンの数は、コマンドで指定された応答文字列の数に一致します。応答が指定されていない場合、"OK"と表示される単一のボタンが含まれます。

タイムアウトオプションが使用される場合、durationはパネルがユーザーの入力を待って表示される時間(明示的に指定されていない場合は秒)を指定します。ユーザーがその時間内にパネルに反応しない場合、パネルは自動的に閉じられます。その場合、変数itは空になり、result関数はパネルがタイムアウトしたことを示す値に設定されます。

アイコンオプションを使用して、パネルに表示する別のアイコンを提供することもできます。使用される場合、iconNameは既知のシステムアイコンの名前、またはアイコンファイルへのフルパスのいずれかになります。

プロンプト、返信、タイトル、タイムアウト、アイコンの指定順序は自由で、すべての項目はオプションです(ただし、少なくとも1つのオプションが必要です)。

answerコマンドの実行後、変数itにはクリックされたボタンのタイトル(またはパネルのタイムアウトが経過した場合は空)が含まれます。

Answerコマンドについての詳細は、Using Ask and Answerを参照してください。

ask

それが何をするか

ユーザーが応答をタイプできるプロンプト文字列とテキスト入力フィールドを含むモーダルパネルを表示します。デフォルトの応答を提供できます。ユーザーの回答を変数itに返します。

それを使うタイミング

ユーザーからの回答が予め定められた選択肢からのものではない場合、askコマンドを使用します。入力がタイプされている間隠されている入力を要求するために、ask passwordコマンドを使用します。

ask "Enter your name:"

ask "How do you feel?" title "Greetings!"

ask query with defaultAnswer title "Please Answer"

ask password "Enter the secret code"

Syntax

ask
{password} {
Options
}

Options:

{
prompt
| question}
question
[title | titled] titleExpr
[with {answer} | answer] presetAnswer
[hint | placeholder | place holder] placeholder
[message | body] {text} message
{with} [buttons | button {label{s}] label1 {and label2}
[timeout | time out] {after | in} duration
icon iconName
{from} list listOfChoices

questionのテキスト値は、パネルの入力フィールド上のプロンプトとして表示されます。 TitleExprは、パネルの上部で大きなフォントで表示されるタイトルです。 presetAnswer式の文字列値は、デフォルトの応答として回答フィールドに表示されます。 placeholderが指定された場合、placeholderの値は、回答フィールドが空で選択されていないときに表示されます。 messageテキストは、タイトルの下のパネルに表示されます。

label1(およびオプションで label2)が指定されている場合、それらはパネルのボタンを定義します。それ以外の場合、パネルの下部には CancelOK の2つのボタンが表示されます。ユーザーが OK ボタンをクリックするか(またはリターンを押すと)、回答フィールドの値が変数itに入ります。ユーザーが Cancel ボタンをクリックすると、変数itの値は空に設定され、結果関数は "Cancel" を返します。

タイムアウトオプションが使用されている場合、durationは、ユーザーの入力を待ってパネルが表示される時間(明示的に指定されていない場合は秒)を指定します。ユーザーがその時間内にパネルに応答しない場合、パネルは自動的に閉じられます。その場合、変数itは空になり、結果関数はパネルがタイムアウトしたことを示す値に設定されます。

アイコンオプションを使用して、パネルに表示する別のアイコンを提供できます。それが使用されている場合、iconNameは既知のシステムアイコンの名前、またはアイコンファイルへのフルパスのいずれかです。

オプションが指定される順序は柔軟で、すべてのオプションはオプションです(ただし、少なくとも1つのオプションを供給する必要があります)。

askコマンドの実行後、変数itにはフィールドに入力された値(またはパネルのタイムアウトが経過した場合は空)が含まれます。

Askコマンドについての詳細は、Using Ask and Answerを参照してください。

put

それが何をするのか

指定された宛先コンテナがない場合、putコマンドは標準出力にテキストを表示します。

それを使うとき

スクリプト中でステータス情報を表示したい場合や、answerコマンドのようなモーダルパネルを表示せずに情報を表示したい場合に、このようにputコマンドを使用します。また、スクリプトの開発中には、スクリプトの異なるポイントでの変数の現在の値を表示するためにもよく使用されます。

put "Successfully loaded file " & fileName

put n

put "The area is: " & pi * radius^2

Syntax

put {
expr
{ ,
expr
...}}

Exprは有効なSenseTalk表現であれば何でも可能です。複数の表現をコンマで区切って指定すると、それぞれが別の行に表示されます。

ここでは、putコマンドの最も簡単な形式について説明します。putコマンドの他の使用方法については、Containersを参照してください。

beep

command

それは何をするのか

システムのビープ音を再生します。

それを使うとき

beepコマンドは、ユーザーの注意を引くためや何かが発生したことをユーザーに知らせるために使用します。

beep

beep 5 -- really get their attention!

Syntax

beep {expr}

Exprは任意の有効なSenseTalk表現であり、ビープの回数を表す数値を返すことができます。

play command

それが何をするか

音声ファイルを再生します。

それを使うタイミング

システム音声や他の音声や音楽ファイルの再生を開始するためにplayコマンドを使用します。

例:

play "Glass" -- without full path, plays a system sound

play "~/Music/iTunes/iTunes Music/Billy Joel/Piano Man.mp3"

play stop -- stops the music

Syntax

play
soundFile

SoundFileは任意の有効なSenseTalk表現であり、再生する音声の名前、または特別のコマンドpauseresumestopのいずれかを指定することができます。

sound function

それが何をするか

現在再生中の音声の名前を返す、または"done"を返します。

それを使うタイミング

再生中の音声を監視するために、sound関数を使用します。

wait until the sound is "done"

Syntax

the sound

sound()

ユーザーにファイルまたはフォルダを選択させる

スクリプトが操作するファイルやフォルダを選択または指定するために、ユーザーと対話するいくつかのコマンドがあります:

answer file

answer folder

ask file

ask folder

answer file コマンドと answer folder コマンドは、ユーザーが既存のファイルまたはフォルダを選択するための標準的なOpenパネルを表示します。ask file コマンドと ask folder コマンドは、ユーザーがファイルシステム内の位置を選択し、新しいファイル名を入力するための標準的なSaveパネルを表示します。

answer file command

それが何をするか

ユーザーが既存のファイルを選択できるようにOpen Panelを表示し、選択したファイルの完全なパス名を変数 it で返します。

それを使用するタイミング

ユーザーに既存のファイルの名前を指定させたい場合には、answer file コマンドを使用します。その後、ファイルを open コマンドで開いたり、他の方法で使用したりすることができます。

ユーザーが選択したファイルのフルパス名は変数itで返されます。複数のファイルが選択された場合、リストが返され、ユーザーが選択した各ファイル名はitの別の項目になります。ファイルが選択されなかった場合(つまり、ユーザーがパネルの「キャンセル」ボタンをクリックした場合)、answer fileコマンドの後の変数itは空になり、the result関数は「キャンセル」を返します。

例:

answer file

answer file "アカウントファイルを選択" with "Dec03"

answer multiple files "データセットを選択" in folder "/Users/mmalone/data"

answer file with button label "選択" of type "png", "tif", or "tiff" in folder "~/Pictures" title "画像を選択"

Syntax

ask [file | folder | directory] {Options}

オプション:
{prompt} promptExpr
[title | titled] titleExpr
of type requiredExtension
with defaultFile
in [folder | directory] defaultFolder
allow multiple
{with} {button} label buttonLabel

answer fileコマンドの最も簡単な形式はanswer fileです。multipleまたはsingleの単語をfileの前に使用して、ユーザーが一度に複数のファイルを選択できるかどうかを指定できます。指定されていない場合、単一のファイルのみを選択できます。

このコマンドの一部として追加のオプションを指定できます。これらのオプションは必須ではなく、任意の順序で指定できますが、オプションを2回以上指定することはできません。

promptまたはtitleオプションが指定されている場合、指定された表現はOpenパネルの上部に表示されるタイトルとして使用されます。指定されていない場合、"Open"が使用されます。両方とも指定されている場合、promptExprのみが使用されます。

一つまたは複数のファイルタイプはof typeオプションを使用して指定できます。タイプ間でコンマ、or単語、またはその両方を使用して複数のタイプを列挙することができます。このオプションが含まれている場合、拡張子が指定されたタイプのいずれかと一致するファイルのみが受け入れられます(ファイル拡張子は、名前の最後のピリオド以降のファイル名の一部です)。ファイル拡張子はピリオドを含めても含めなくても指定できます(例えば、"eps"と".eps"の世界はどちらも受け入れられます)。emptyまたは""を指定して、拡張子がないファイルを含めることができます。

withdefaultFileが指定されている場合、そのファイルが存在する場合は選択されます。値にフォルダとファイル名の両方が含まれている場合、それはOpenパネルに表示される初期のフォルダになります。

in folderオプションは、Openパネルに表示される初期のフォルダの内容を指定します。

labelオプションが指定されている場合、buttonLabelはOpenパネルのデフォルトボタンのラベルとして使用されます。指定されていない場合、ボタンのラベルは"Open"になります。

allow multipleが指定されている場合、ユーザーは一度に複数のファイルを選択することができます。このオプションは、answer multiple files構文の代わりとなるオプションです。

answer folder, answer directory コマンド

それが何をするか

Openパネルを表示し、ユーザーが既存のフォルダを選択し、そのフォルダのフルパス名を変数itで返します。

それを使うタイミング

ユーザーにフォルダの名前を提供してもらいたいときはいつでも、answer folderコマンドを使用します。

ユーザーが選択したフォルダのフルパス名は変数itで返されます。複数のフォルダが選択された場合、それぞれのフォルダ名がitの別々の項目としてリストに返されます。フォルダが選択されない場合(つまり、ユーザーが「Cancel」ボタンをクリックする場合)、answer folderコマンドの後で変数itは空になり、result関数は「Cancel」を返します。

answer folder "作業ディレクトリを選択してください:"

answer multiple folders "ソースパスを選択してください" \

in folder "~/Documents"

Syntax

answer {multiple | single} [folder | directory] {Options}

オプション:
{prompt} promptExpr
[title | titled] titleExpr
with defaultPath
in [folder | directory] defaultFolder
allow multiple
{with} {button} label buttonLabel

answer folderコマンドはanswer fileコマンドとほぼ同じですが、ユーザーにはファイルではなくフォルダを選択できるOpenパネルが表示されます。

このコマンドの一部として、いくつかの追加オプションを指定することができます。これらのオプションは必須ではなく、任意の順序で指定することができますが、一つのオプションを複数回指定することはできません。answer fileコマンドの上にあるオプションの説明を参照してください。ファイルタイプの拡張子はこのコマンドで指定できません。

返される値はスラッシュで終わります、ただしthe folderNamesEndWithSlashグローバルプロパティがfalseに設定されている場合は除きます。末尾のスラッシュにより、ファイル名を単純に追加するだけでフルパス名を作成することが容易になります。

ask file, ask folder, ask directory コマンド

それが何をするか

Saveパネルを表示し、ユーザーが作成するファイルまたはフォルダの名前を指定でき、そのファイルのフルパス名を変数itで返します。

それを使うタイミング

あなたのスクリプトが作成または上書きするファイルまたはフォルダの名前と場所をユーザーに指定させたいとき、ask fileまたはask folderコマンドを使用します。

ユーザーが指定したファイル名のフルパス名は変数itで返されます。ファイルが選択されない場合(つまり、ユーザーが「Cancel」ボタンをクリックする場合)、ask fileコマンドの後で変数itは空になり、result関数は「Cancel」を返します。

すべての標準的なSaveパネルと同様に、ユーザーが既存のファイルを選択すると、ファイルを置き換えるかどうかを尋ねるアラートパネルが表示されます。このパネルでユーザーが「Replace」ボタンをクリックすると、選択されたファイル名が変数itで返されます。ただし、既存のファイルは何も変更されません。同じ名前で新しいファイルを作成する前に、可能な限り既存のファイルを削除することはあなたのスクリプトに委ねられています。there is a file演算子を使用してファイルが存在するかどうかを確認できます、例えばif there is a file fileName then ...のように。

ask file "出力ファイル名を入力してください:"

ask file "作成する一時ファイル:" with "temp1"

ask file "Log Changes" of type ".mylog" in folder "logs"

ask folder "新しいフォルダ名を入力してください:" in folder homeFolder

Syntax

ask [file | folder | directory] {Options}

Options:
{prompt} promptExpr
[title | titled] titleExpr
of type requiredExtension
with defaultFile
in [folder | directory] defaultFolder
allow multiple
{with} {button} label buttonLabel

ask fileコマンドの最もシンプルな形式は単にask fileです。このコマンドの一部として、いくつかの追加オプションを指定できます。これらのオプションは必須ではなく、任意の順序で指定できますが、どのオプションも一度以上指定することはできません。

promptまたはtitleオプションが指定された場合、与えられた表現はSaveパネルの上部に表示されるタイトルとして使用されます。指定されていない場合、"Save"という単語が使用されます。どちらも指定された場合、promptExprのみが使用されます。

of type requiredExtensionオプションが使用されると、Saveパネルは指定されたファイル拡張子を保存するファイルのタイプとして使用し、返されるファイル名がその拡張子を持つことを確認します(ファイル拡張子は、名前の最後のピリオドの後のファイル名の一部です)。ファイルの拡張子は、ピリオドをつけてもつけなくても指定できます(例えば、"eps"と".eps"はどちらも受け入れられます)。

with``defaultFileが指定された場合、Saveパネルはその名前がすでにファイル名フィールドに入力された状態で表示されます。値にフォルダ名とファイル名が含まれている場合、それがSaveパネルに最初に表示されるフォルダになります。

in folderオプションは、Saveパネルに最初に表示されるフォルダの内容を指定します。

labelオプションが指定された場合、buttonLabelはSaveパネルのデフォルトボタンのラベルとして使用されます。指定されていない場合、ボタンのラベルは"Save"になります。

ask folderコマンドの場合、返される値は最後がスラッシュで終わります、ただしthe folderNamesEndWithSlashグローバルプロパティがfalseに設定されている場合を除きます。最後のスラッシュにより、単にファイル名を追加するだけでフルパス名を作成するのが容易になります。