作業を自動化するためのスクリプトの作成

スクリプトを使用すると、用紙方向の設定のような単純な作業から、クライアントごとにカスタマイズしたメールの作成のような複雑な作業まで自動化することができます。

たとえば顧客データベース内の前の週に購入した顧客にお礼のメールを送るといった複雑な一連のタスクを定義することができます。スクリプトを使用してそれぞれの顧客に合わせた電子メールを作成できます。電子メールが完成するとスクリプトがプレビューモードに切り替わり、一時停止するので、送信前にそのメッセージのプレビューを確認できます。上記の作業はすべて「売上入力」レイアウト上のボタンをクリックして行います。

スクリプトを作成するには、FileMaker Pro コマンドの一覧 (「スクリプトステップ」と呼ばれる) からステップを選択して必要に応じてオプションを指定し、正しい順序にステップを並べてからタスクを実行します。

スクリプトは通常クライアント上で実行しますが、FileMaker Server または FileMaker Cloud 上で一部のスクリプトを実行すると、パフォーマンスの向上やスケジュールに従って自動的に実行することができます。FileMaker Server および FileMaker Cloud でのスクリプトの実行を参照してください。

スクリプトの検討

スクリプトの検討を慎重に行うと、目的の作業を効果的に実行することができます。次の点を考慮して検討してください:

  • 作業をさらに細かく分けることができますか? 細かく分けた作業それぞれに対するサブスクリプトを定義してから、サブスクリプトを実行するスクリプトを定義することもできます。スクリプトのデザインとテストは、1 つの複雑なスクリプトに対して行うよりも、いくつかの小さなスクリプトに対して行う方が簡単です。また、サブスクリプトは他のエリアで再使用することもできます。(サブスクリプトを別のスクリプト内で実行する場合は、[スクリプト実行] スクリプトステップを使用します。)
  • どのスクリプトステップをどの条件で実行しますか? 常にすべてのスクリプトステップを実行する必要がありますか? ある条件が満たされるまで何度も実行する必要のあるスクリプトがありますか? スクリプトは他のスクリプトやサブスクリプトを呼び出しますか? スクリプトの進行はさまざまな方法で制御できます。条件分岐スクリプトステップを使用したスクリプトの作成の詳細については、制御に関連するスクリプトステップを参照してください。
  • スクリプトを特定のレイアウトで実行しますか? スクリプトはファイルレベルで定義され、どのレイアウトでも使用することができるため、意図したレイアウトで実行されることを確認する必要があります。レイアウトの変更には、[レイアウト切り替え] スクリプトステップを使用します。
  • スクリプトは、データベース、現在の対象レコード、または特定のレコードセット内のすべてのレコードで機能する必要がありますか? (作業に必要なレコードだけを対象レコードに含める場合は、対象レコードに関連するスクリプトステップを使用します。)
  • 必要なデータがすべて 1 つのデータベースファイルに含まれていますか? それとも、スクリプトで複数のファイルを処理しますか? 複数のファイルを使用する場合、スクリプトで開く必要のあるファイルはどれですか? スクリプトはどのファイルで定義すべきですか? 通常、スクリプトは処理するデータと同じファイルで定義します。複数のファイルを使用したカスタム App の場合、実行するタスクの複雑さによっては、各ファイルに別個のスクリプトが必要になることがあります。
  • どのレコードでスクリプトを開始しますか? たとえば [Loop] スクリプトステップを使用する場合は、最初のレコード、最後のレコード、特定のレコード、または対象レコード内にある現在のレコードのどのレコードでループを開始するかを決定します。(開始レコードを指定するには、[レコード/検索条件/ページへ移動] スクリプトステップ[関連レコードへ移動] スクリプトステップ、または [ポータル内の行へ移動] スクリプトステップを使用します。切り替え/移動スクリプトステップを含めない場合は、スクリプトの実行時に選択されているレコードからループが開始されます。)
  • どのウインドウを使用しますか? スクリプトは最初に特定のウインドウに付けられます。このウインドウはバックグラウンドにある場合があります。スクリプトは、その中に記述された動作によって他のウインドウに切り替わるまで、そのウインドウに付けられたままとなります。たとえば、異なるウインドウを指定するには、[ウインドウを選択] スクリプトステップを使用します。指定したウインドウが使用できない場合、スクリプトはファイルの一番手前のウインドウに切り替わります。スクリプトを一時停止すると、関連ウインドウは一番手前になります (使用可能な場合)。ウインドウに関連するスクリプトステップを参照してください。
  • スクリプトでモードを切り替える必要がありますか? スクリプトは、ブラウズモード、検索モード、レイアウトモード、プレビューモードで実行できます。スクリプトの処理を実行する前に、スクリプトが適切なモードになるように設定してください。たとえば、フィールドやレコード内のデータを修正する場合は、[ブラウズモードに切り替え] スクリプトステップを使用し、検索条件の設定や実行を行う場合は、[検索モードに切り替え] スクリプトステップを使用します。

    メモ  レイアウトモードでスクリプトを実行すると、自動的にブラウズモードに切り替わります。

  • スクリプトでどのフィールドやレイアウトが必要ですか? いくつかのステップ ([フィールドへ移動] スクリプトステップ[テキストを挿入] スクリプトステップなど) ではフィールドが現在のレイアウト上にある必要がありますが、[フィールド設定] スクリプトステップなどではその必要はありません。[レイアウト切り替え] スクリプトステップを使用してスクリプトで必要なフィールドがあるレイアウトに切り替えるか、レイアウトの右側のグレーの領域にフィールドを配置して、(ユーザではなく) スクリプトステップがフィールドを使用できるようにします。
  • レコードを特定の順序で処理する必要がありますか? 現在のソート順、特定のソート順、またはソート解除 (レコードの作成順) の中から選択します。レコードを適切な順序で並べてから処理するには、ループを開始する前に、[レコードのソート] スクリプトステップまたは [レコードのソート解除] スクリプトステップを使用します。
  • 複数のフィールドやレコード間でスクリプトをどのように進行させますか? 複数のフィールドやレコードの処理を制御する場合は、[レコード/検索条件/ページへ移動] スクリプトステップ[Loop] スクリプトステップ[Exit Loop If] スクリプトステップ、および [End Loop] スクリプトステップを使用します。
  • スクリプトをいつ終了しますか? すべてのスクリプトステップが実行した後ですか? 指定された条件が満たされた後ですか? スクリプトが指定された条件を満たしたときに [現在のスクリプト終了] スクリプトステップなどの作業を実行するには、[If] スクリプトステップ[Else If] スクリプトステップおよび [Else] スクリプトステップを使用します。
  • 実行中のスクリプトをユーザが停止できる必要がありますか? スクリプトの終了が早すぎると未完了のデータや間違ったデータが生成されるプロセスがスクリプトに含まれていますか?[ユーザによる強制終了を許可] スクリプトステップを使用して、ユーザがスクリプトを停止できるかどうかを制御します。
  • スクリプトのテストはどのように実行しますか? あらかじめ定義された位置でスクリプトを一時停止する場合は、[スクリプト一時停止/続行] スクリプトステップを使用します。元のデータを保持するには、データベースのコピーを保存してから、コピーしたデータベース内でスクリプトの管理とテストを行います。

    メモ  スクリプトデバッガを使用してスクリプトのテストとトラブルシューティングを行うことができます。スクリプトのデバッグを参照してください。

  • 空の対象レコードなどのエラー状態をどのように処理しますか? Get (最終エラー) 関数を使用すると、FileMaker Pro が最後にレポートしたエラー状態を取得できます。ユーザによるエラーや予期しない結果に適切に対処するスクリプトを作成するには、この関数と、[If] スクリプトステップ[Else If] スクリプトステップ、および [Else] スクリプトステップを使用します。さらに細かく制御するには、[エラー処理] スクリプトステップを使用してエラー発生時に表示されるメッセージを非表示にしてから、[カスタムダイアログを表示] スクリプトステップ を使用して独自のスクリプトで置き換えます。
  • すべてのユーザにすべてのスクリプトの実行を許可しますか? スクリプトに対するユーザのアクセスを制御するには、アクセス権セットを使用します。アクセス権セットを使用することで、ユーザがスクリプトを実行または変更する権限を、個々のスクリプトに対して許可するか、すべてのスクリプトに対して許可するか、それともどのスクリプトにも許可しないかを設定することができます。また、今後ファイルに定義する新しいスクリプトの各アクセス権セットに対して、デフォルトのアクセス権を設定することもできます。完全アクセス権で実行するスクリプトを設定すると、割り当てられているアクセス権では通常は実行できない操作を、ユーザに代わってスクリプトで処理することができます。アクセス権セットの作成と編集を参照してください。
  • ユーザはこのスクリプトをどのように実行しますか? スクリプトを実行するには、ボタンを作成するか、[スクリプト] メニューへのスクリプトの追加を指定します。スクリプトは、[スクリプトワークスペース] から実行でき、スクリプトトリガがアクティブになったときにも実行できます。たとえば、OnFirstWindowOpen スクリプトトリガを使用してデータベースが開いたときにスクリプトを実行できます。

これらの点を考慮して、データベースにスクリプトを定義します。スクリプトの作成と編集を参照してください。