スクリプトの検討スクリプトの検討を慎重に行うと、目的の作業を効果的に実行することができます。次の点を考慮して検討してください。
• 作業をさらに細かく分けることができますか?細かく分けた作業それぞれに対するサブスクリプトを定義してから、サブスクリプトを実行するスクリプトを定義することもできます。スクリプトのデザインとテストは、1つの複雑なスクリプトに対して行うよりも、いくつかの小さなスクリプトに対して行う方が簡単です。また、サブスクリプトは他のエリアで再使用することもできます。(サブスクリプトを別のスクリプト内で実行する場合は、スクリプト実行スクリプトステップを使用します。)
• どのスクリプトステップをどの条件で実行しますか?常にすべてのスクリプトステップを実行する必要がありますか?ある条件が満たされるまで何度も実行する必要のあるスクリプトがありますか?スクリプトは他のスクリプトやサブスクリプトを呼び出しますか?スクリプトの進行は様々な方法で制御できます。条件分岐スクリプトステップを使用したスクリプトの作成の詳細については、制御に関連するスクリプトステップを参照してください。
• スクリプトを特定のレイアウトで実行しますか?スクリプトはファイルレベルで定義され、どのレイアウトでも使用することができるため、意図したレイアウトで実行されることを確認する必要があります。レイアウトの変更には、レイアウト切り替えスクリプトステップを使用します。
•
• 必要なデータがすべて1つのデータベースファイルに含まれていますか?それとも、スクリプトで複数のファイルを処理しますか?複数のファイルを使用する場合、スクリプトで開く必要のあるファイルはどれですか?スクリプトはどのファイルで定義すべきですか?通常、スクリプトは処理するデータと同じファイルで定義します。複数のファイルを使用したデータベースソリューションの場合、実行するタスクの複雑さによっては、各ファイルに別個のスクリプトが必要になることがあります。
• どのレコードでスクリプトを開始しますか?たとえば Loopスクリプトステップを使用する場合は、最初のレコード、最後のレコード、特定のレコード、または対象レコード内にある現在のレコードのどのレコードでループを開始するかを決定します。(開始レコードを指定するには、レコード / 検索条件 / ページへ移動スクリプトステップ、関連レコードへ移動スクリプトステップ、またはポータル内の行へ移動スクリプトステップを使用します。)切り替え/移動スクリプトステップを含めない場合は、スクリプトの実行時に選択されているレコードからループが開始されます。
• どのウインドウを使用しますか。スクリプトは最初に特定のウインドウに付けられます。このウインドウは背景にある場合があります。スクリプトは、その中に記述された動作によって他のウインドウに切り替わるまで、そのウインドウに付けられたままとなります。たとえば、異なるウインドウを指定するには、ウインドウを選択スクリプトステップを使用します。指定したウインドウが使用できない場合、スクリプトはファイルの一番手前のウインドウに切り替わります。スクリプトを一時停止すると、関連ウインドウは一番手前になります(使用可能な場合)。
• スクリプトでモードを切り替える必要がありますか?スクリプトは、ブラウズモード、検索モード、レイアウトモード、プレビューモードで実行できます。スクリプトの処理を実行する前に、スクリプトが適切なモードになるように設定してください。たとえば、フィールドやレコード内のデータを修正する場合は、ブラウズモードに切り替えスクリプトステップを使用し、検索条件の設定や実行を行う場合は、検索モードに切り替えスクリプトステップを使用します。
• スクリプトでどのフィールドやレイアウトが必要ですか?いくつかのステップ(フィールドへ移動スクリプトステップやテキストを挿入スクリプトステップなど)ではフィールドが現在のレイアウト上にある必要がありますが、フィールド設定スクリプトステップなどではその必要はありません。レイアウト切り替えスクリプトステップを使用してスクリプトで必要なフィールドがあるレイアウトに切り替えるか、レイアウトの右側のグレーの領域にフィールドを配置して、(ユーザではなく)スクリプトステップがフィールドを使用できるようにします。
• レコードを特定の順序で処理する必要がありますか?現在のソート順、特定のソート順、またはソート解除(レコードの作成順)の中から選択します。レコードを適切な順序で並べてから処理するには、ループを開始する前に、レコードのソートスクリプトステップまたはレコードのソート解除スクリプトステップを使用します。
•
•
• 実行中のスクリプトをユーザが停止できる必要がありますか?スクリプトの終了が早すぎると未完了のデータや間違ったデータが生成されるプロセスがスクリプトに含まれていますか?ユーザによる強制終了を許可スクリプトステップを使用して、ユーザがスクリプトを停止できるかどうかを制御します。
• スクリプトのテストはどのように実行しますか?あらかじめ定義された位置でスクリプトを一時停止する場合は、スクリプト一時停止/続行スクリプトステップを使用します。元のデータを保持するには、データベースのコピーを保存してから、コピーしたデータベース内でスクリプトの管理とテストを行います。
• 空の対象レコードなどのエラー状態をどのように処理しますか?Get ( 最終エラー ) 関数を使用すると、FileMaker Pro が最後にレポートしたエラー状態を取得できます。ユーザによるエラーや予期しない結果に適切に対処するためのスクリプトを作成するには、この関数と、Ifスクリプトステップ、Else Ifスクリプトステップ、およびElseスクリプトステップを使用します。さらに細かく制御するには、エラー処理スクリプトステップを使用してエラー発生時に表示されるメッセージを非表示にし、カスタムダイアログを表示スクリプトステップを使用して独自のスクリプトで置き換えます。
• すべてのユーザにすべてのスクリプトの実行を許可しますか?スクリプトに対するユーザのアクセスを制御するには、アクセス権セットを使用します。アクセス権セットを使用することで、ユーザがスクリプトを実行または変更する権限を、個々のスクリプトに対して許可するか、すべてのスクリプトに対して許可するか、それともどのスクリプトにも許可しないかを設定することができます。また、今後ファイルに定義する新しいスクリプトの各アクセス権セットに対して、デフォルトのアクセス権を設定することもできます。完全アクセス権で実行するスクリプトを設定すると、割り当てられているアクセス権では通常は実行できない操作を、ユーザに代わってスクリプトで処理することが可能です。アクセス権セットの管理を参照してください。
• ユーザはこのスクリプトをどのように実行しますか?スクリプトを実行するには、ボタンを作成するか、[スクリプト] メニューへのスクリプトの追加を指定します。スクリプトは、[スクリプトワークスペース] ダイアログボックスから実行したり、スクリプトトリガがアクティブになったときに実行することもできます。たとえば、OnFirstWindowOpen スクリプトトリガを使用して、データベースが開いたときにスクリプトを実行できます。