作業を自動化するためのスクリプトの作成 > スクリプトの作成と編集 > FileMaker Server でのスクリプトの実行
 
FileMaker Server でのスクリプトの実行
FileMaker Server によってホストされるファイルのスクリプトは通常、クライアント上で実行されます。ただし以下を使用してスクリプトをサーバー上 (サーバーサイドスクリプト) で実行することができます。
クライアント上で実行されるスクリプト内のサーバー上のスクリプト実行 スクリプトステップ
FileMaker Server スケジュール (「FileMaker Server ヘルプ」を参照)
FileMaker Server でのスクリプト実行方法の相違
上記の方法のいずれかで起動したスクリプトは、FileMaker Server のコンポーネントである FileMaker スクリプトエンジン (FMSE) によって実行されます。FMSE は各スクリプトをサーバー上の個別セッションで実行するクライアントです。その結果、サーバーサイドスクリプトは次のように動作します。
クライアントのコンテキスト (現在のレイアウト、対象レコード、ソート順、レコード、グローバルフィールドの値、ローカルまたはグローバル変数の値) がありません。
[サーバー上のスクリプト実行] スクリプトステップのスクリプト引数を使用して、クライアントのコンテキストに関する情報をサーバーサイドスクリプトに渡すことができます。サーバーサイドスクリプトはレイアウト切り替え スクリプトステップ検索実行 スクリプトステップのようなスクリプトステップのその情報を使用して、処理するレイアウトと対象レコードを指定できます。
スクリプト引数とスクリプトの結果は 100 万文字までサポートされます。
次の両方が真の場合にだけ他の FileMaker Pro ファイルにアクセスできます。
ファイルが同じホスト上にある。
サーバーサイドスクリプトを起動したクライアントによってファイルがすでに開かれているか、ファイルの [ファイルオプション] ダイアログボックスで指定したアカウント名とパスワードでファイルが設定されている。
次の場合を除き、サーバーサイドスクリプトは起動方法に関係なく同じように実行されます。
[サーバー上のスクリプト実行] スクリプトステップを使用するクライアントには、スクリプトがサーバー上で完了するまで待機して Get ( スクリプトの結果 ) 関数を使用して結果を取得するオプションがあります。
FileMaker Server スケジュールは、実行中のスクリプトが指定の時間制限を超えたら強制終了するように設定できます。
サポートされていないスクリプトステップの処理
多くのスクリプトステップが FMSE でサポートされていますが、サポートされていないスクリプトステップを実行しようとするとエラー 3 (「コマンドが使用できません」) が返され、サポートされていないステップはスキップされて次のステップに進みます。サポートされていないステップを処理するには、スクリプトで If スクリプトステップを次の関数とともに使用できます。
Get ( 最終エラー ) 関数をステップの後に配置すると、ステップがサポートされているかどうかがチェックされ、サポートされているステップが代わりに実行されます。たとえば、[ファイルを開く] スクリプトステップは FMSE でサポートされていないため、サーバー上で実行する次のスクリプトの例ではそのステップをスキップし「未対応」という結果を返します。
ファイルを開く [「請求書バックアップ」]
If [Get ( 最終エラー ) = 3]
現在のスクリプト終了 [ テキスト結果: "未対応"]
End If
Get ( ホストアプリケーションバージョン ) 関数を他のステップの前に配置すると、スクリプトが FileMaker Server 上で実行されているかどうかがチェックされサポートされているステップのみが実行されます。例:
If [LeftWords ( Get ( ホストアプリケーションバージョン ; 1 ) = "Server"]
# FMSE によってサポートされているスクリプトステップに進む
End If
FMSE でサポートされているスクリプトステップを確認するには、FileMaker Pro の [スクリプトワークスペース] でスクリプトを開いて [互換性] ボタン をクリックし、[サーバー] を選択します。サポートされていないスクリプトステップは別の色で表示されます。また スクリプトステップリファレンス の各スクリプトステップの互換性表も参照できます。
サーバー上でスクリプトを実行する理由
クライアントとサーバー間のネットワークトラフィック量を減らすことでパフォーマンスを改善する。
低速クライアントから高速クライアントに長時間実行されるタスクをオフロードする。
FileMaker Go ではなく FileMaker Server でサポートされているプラグインが必要なタスクを FileMaker Go クライアントで実行可能にする。
サーバーの DSN を使用する ODBC データソースとともに [レコードのインポート] または [SQL を実行] スクリプトステップを使用する。
メモ
レコードがクライアントによってロックされている場合、サーバーサイドスクリプトは未確定のデータへアクセス、またはレコードの内容を変更することはできません。
サーバーサイドスクリプトを実行すると、スクリプトを含むファイルが開閉されます。したがって、スクリプトが起動すると OnFirstWindowOpen スクリプトトリガがアクティブになり、スクリプトが終了すると OnLastWindowClose がアクティブになります。
サーバーサイドスクリプトは スクリプト実行 スクリプトステップ を使用してサブスクリプト (サブスクリプトもサーバー上で実行される) を実行できます。ただしこれらのサブスクリプトが同じサーバー上のファイル内にあり、クライアントによってすでに開かれている場合に限ります。
[サーバー上のスクリプト実行] によって実行されるスクリプトはクライアントと同じアカウントを使用します。FileMaker Server スケジュールによって実行されるスクリプトは、スケジュール (「FileMaker Server ヘルプ」を参照) で指定されたアカウントを使用します。
サーバーサイドスクリプトでは、スクリプトがクライアントで実行されているときに FileMaker 警告メッセージをクライアントに表示させることができないため、サーバーサイドスクリプトは常に、エラー処理 スクリプトステップがオンに設定されている場合と同様に処理を実行します。エラー状態を処理するには、サーバーサイドスクリプトの Get ( 最終エラー ) 関数を使用します。問題のトラブルシューティングを支援するため、FileMaker Server のイベントログにもエラーが書き込まれます。
クライアントはサーバーサイドスクリプトを強制終了することはできません。ただし次の場合はサーバーサイドスクリプトを強制終了することができます。
サーバー管理者が、FileMaker Server Admin Console で切断可能な個別のクライアントとして表示されるスクリプトを停止した場合
実行中のスクリプトが、スクリプトを開始した FileMaker Server スケジュールで指定した時間制限を超えた場合
スクリプトが不明なスクリプトステップに到達した場合 (ユーザによる強制終了を許可 スクリプトステップを参照)
FileMaker Server ヘルプ」を参照してください。
Get ( システム IP アドレス ) などのハードウェア関連の関数はサーバーサイドスクリプトで、クライアントではなく FileMaker Server のデータベースサーバーコンポーネントからの情報を返します。