コールバックを使用してサーバー上のスクリプト実行

クライアントを一時停止せずに現在のファイルを共有しているサーバー上でスクリプトを実行してサーバースクリプトが完了すると指定されたコールバックスクリプトをクライアント上で実行します。

オプション 

  • 指定:

    • [一覧から] を使用すると、実行するスクリプトを選択することができます。

    • [名前で] を使用すると、計算式でスクリプト名を指定することができます。スクリプト名では大文字と小文字が区別されません。

  • [引数] では、指定したスクリプトのスクリプト引数を指定します。

  • [指定されたコールバックスクリプト] はサーバー上でスクリプトが完了した後にクライアント上で実行するスクリプトです。選択項目:

    • [一覧から] を使用すると、実行するスクリプトを選択することができます。

    • [名前で] を使用すると、計算式でスクリプト名を指定することができます。スクリプト名では大文字と小文字が区別されません。

  • [引数] では、指定したコールバックスクリプトのスクリプト引数を指定します。

  • [状態] では、コールバックスクリプトが実行されているときに現在実行中のスクリプトを処理する方法を指定します。オプションは [続行]、[停止]、[終了]、[再開]、[一時停止] です。新しいスクリプトを開始するときの現在のスクリプトの処理オプションを参照してください。

互換性 

製品 サポート

FileMaker Pro

はい

FileMaker Go

はい

FileMaker WebDirect

はい

FileMaker Server

いいえ

FileMaker Cloud

いいえ

FileMaker Data API

いいえ

カスタム Web 公開

いいえ

起点バージョン 

20.1

説明 

現在のファイルは FileMaker Server または FileMaker Cloud で共有する必要があります。その他の場合このスクリプトはエラーを返します。FileMaker Server および FileMaker Cloud でのスクリプトの実行を参照してください。

コールバックスクリプトは現在のスクリプトが完了した後にクライアント上で実行されるようにスケジュールされます。これは、[OnTimer スクリプトをインストール] スクリプトステップと OnWindowTransaction スクリプトトリガによってトリガされるスクリプトと同様です。スクリプトが実行されるコンテキストが不明なため、このスクリプトステップが実行された時と同じであるかどうかはわかりません。必要に応じて、コールバックスクリプトの引数を使用してクライアント上で正常に実行されるように十分なコンテキスト、たとえば使用するレイアウトや対象レコードなどを渡します。

メモ  コールバックスクリプトの引数として計算式を指定すると、クライアント上でコールバックスクリプトが実行される際にその計算式が評価されます。

次の例では、クライアント上でコールバックスクリプトが実行された際に $data が存在しないため、何も返されません。

  • 呼び出し元

    変数を設定 [$data ; 値: 1]

    コールバックを使用してサーバー上のスクリプト実行 [指定: 一覧から ;「テスト」; 引数: ; 指定されたコールバックスクリプト: 一覧から ;「コールバック」; 引数: $data ; 状態: 続行]

  • テスト

    変数を設定 [$data ; 値: 2]

  • コールバック

    変数を設定 [$param ; 値: Get (スクリプト引数)]

    カスタムダイアログを表示 [$param]

メモ 

  • コールバックスクリプトは次のシナリオでは呼び出されません:

    • サーバーまたはクライアントが予期せず終了する。

    • サーバー上のスクリプトが完了する前にユーザがクライアントを終了またはファイルを閉じる。

    • スクリプトステップ実行中にネットワーク接続が切断される。ただし、サーバースクリプトの完了後 10 分以内に再接続すると、コールバックスクリプトが実行されます。

  • このスクリプトステップの複数のインスタンスは連続して実行することができます。コールバックスクリプトはこれらのスクリプトステップが完了した順に実行されます。

  • コールバックスクリプトが指定されていない場合、このスクリプトステップは [サーバー上のスクリプト実行] スクリプトステップと同様に実行されます。

例 1 

サーバー上でスクリプトを実行して現在のレイアウト名、顧客 ID、顧客の電子メールアドレスをスクリプト引数として送信します。サーバーは、レコードまたは引数内で指定されたレコードに移動して現在のレコードのスナップショットリンクを保存し、引数で指定された電子メールアドレスにスナップショットリンクを送信して結果を返します。クライアントはスクリプトの結果をサーバーから取得して、これをカスタムダイアログボックスで表示します。

メインのスクリプト: スナップショットリンクを電子メール送信 (クライアント)

コピー
コールバックを使用してサーバー上のスクリプト実行 [指定: 一覧から ; 「スナップショットリンクを電子メール送信 (サーバー)」 ; 
引数: List (Get (レイアウト名) ; 顧客::ID ; 顧客::電子メール) ; 
指定されたコールバックスクリプト: 一覧から ; 「メッセージを完了 (クライアント)」 ; 引数: ; 状態: 続行]

サブスクリプト: スナップショットリンクを電子メール送信 (サーバー)

コピー
レイアウト切り替え [GetValue (Get (スクリプト引数) ; 1) ; アニメーション: なし]
検索モードに切り替え [一時停止: オフ]
フィールド設定 [顧客::ID ; GetValue (Get (スクリプト引数) ; 2)]
検索実行 [ ]
変数を設定 [$パス ; 値: Get (テンポラリパス) & "スナップショット.fmpsl"]
レコードをスナップショットリンクとして保存 [「$パス」; 現在のレコード ; フォルダを作成: オフ]
メールを送信 [SMTP サーバー経由で送信; ダイアログなし ; 宛先: GetValue (Get (スクリプト引数) ; 3); 「$パス」]
現在のスクリプト終了 [テキスト結果: "スナップショットリンク送信済み"]

コールバックスクリプト: メッセージを完了 (クライアント)

コピー
カスタムダイアログを表示 [Get (スクリプトの結果)]