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
If [ PatternCount ( Get (アプリケーションバージョン) ; "Server" ) > 0 ]
# FMSE によってサポートされているスクリプトステップに進む
End If
FMSE でサポートされているスクリプトステップを確認するには、FileMaker Pro の [スクリプトワークスペース] でスクリプトを開いて
をクリックし、[
サーバー] を選択します。サポートされていないスクリプトステップは別の色で表示されます。また
スクリプトステップリファレンス の各スクリプトステップの互換性表も参照できます。
サーバー上でスクリプトを実行する理由
•クライアントとサーバー間のネットワークトラフィック量を減らすことでパフォーマンスを改善する。
•低速クライアントから高速クライアントに長時間実行されるタスクをオフロードする。
•FileMaker Go ではなく FileMaker Server でサポートされている
プラグインが必要なタスクを FileMaker Go クライアントで実行可能にする。
•サーバーの
DSN を使用する
ODBC データソースとともに [レコードのインポート] または [SQL を実行] スクリプトステップを使用する。
メモ
•レコードがクライアントによってロックされている場合、サーバーサイドスクリプトは未確定のデータへアクセス、またはレコードの内容を変更することはできません。
•サーバーサイドスクリプトは
スクリプト実行 スクリプトステップ を使用して
サブスクリプト (サブスクリプトもサーバー上で実行される) を実行できます。ただしこれらのサブスクリプトが同じサーバー上のファイル内にあり、クライアントによってすでに開かれている場合に限ります。
•[サーバー上のスクリプト実行] によって実行されるスクリプトはクライアントと同じアカウントを使用します。FileMaker Server スケジュールによって実行されるスクリプトは、スケジュール (
FileMaker Server ヘルプを参照) で指定されたアカウントを使用します。アカウントのアクセス権設定では fmapp 拡張アクセス権を有効にする必要があります。
アクセス権セットの拡張アクセス権の編集を参照してください。
•サーバーサイドスクリプトでは、スクリプトがクライアントで実行されているときに FileMaker 警告メッセージをクライアントに表示させることができないため、サーバーサイドスクリプトは常に、
エラー処理 スクリプトステップがオンに設定されている場合と同様に処理を実行します。エラー状態を処理するには、サーバーサイドスクリプトの
Get (最終エラー) 関数を使用します。問題のトラブルシューティングを支援するため、FileMaker Server のイベントログにもエラーが書き込まれます。
•クライアントはサーバーサイドスクリプトを強制終了することはできません。ただし次の場合はサーバーサイドスクリプトを強制終了することができます。
•サーバー管理者が、FileMaker Server Admin Console で切断可能な個別のクライアントとして表示されるスクリプトを停止した場合
•実行中のスクリプトが、スクリプトを開始した FileMaker Server スケジュールで指定した時間制限を超えた場合
•Get (システム IP アドレス) などのハードウェア関連の関数はサーバーサイドスクリプトで、クライアントではなく FileMaker Server のデータベースサーバーコンポーネントからの情報を返します。