Claris FileMaker のスクリプト実行方法あれこれ

Claris FileMaker のスクリプトを実行する方法はいくつかあります。
最も基本的なものは、ボタンやボタンバーなどにスクリプトを設定して、ユーザがそれをクリックまたは、タップし、実行されるというものです。

ボタンやボタンバーなどからスクリプトを実行する以外の方法は以下のものがあります。

  • 「スクリプト実行」スクリプトステップ
  • スクリプトトリガ
  • 「サーバー上のスクリプト実行」スクリプトステップ
  • 「コールバックを使用してサーバー上のスクリプト実行」スクリプトステップ
  • URLスキーム(fmpプロトコル)
  • FileMaker Server Admin Console でスケジュールを設定
  • FileMaker Data API
  • Webビューア内のJavaScriptの関数「FileMaker.PerformScriptWithOption」

今回は、これらの実行方法をひとつずつ解説いたします。

「スクリプト実行」スクリプトステップ

ボタンやボタンバーなどからスクリプトを実行する以外では、最も使われるものであろうものは、この「スクリプト実行」スクリプトステップになると思います。
これは、スクリプト内でスクリプトを指定し、実行するものとなります。所謂「サブスクリプト」を実行するものです。
スクリプトを実行する時に、スクリプト引数を設定でき、呼び出したスクリプトで、「Get ( スクリプト引数 )」関数を使うことによって、スクリプト引数が取得できます。
スクリプトの終了時には、スクリプトの結果を設定できます。
呼び出し元のスクリプトで「Get ( スクリプトの結果 )」関数を使うことによって、呼び出したスクリプトで設定されたスクリプトの結果を取得できます。

スクリプトの結果については、過去に記事を書いていますので、ご参照ください。

スクリプトトリガ

スクリプトトリガを設定して、イベントの発生時にスクリプトを実行するように指定することができます。
スクリプトトリガが設定できる箇所は複数あります。

  • ファイルオプションのスクリプトトリガタブ
  • レイアウト設定のスクリプトトリガタブ
  • レイアウトオブジェクトに設定

スクリプトトリガは、多くの種類(FileMaker 2023 では26種類)があり、複数のスクリプトトリガが設定されている場合は、順序が決まっています。また、スクリプトトリガの種類によっては、内容をきちんと把握していないと、想定外のタイミングで実行されるケースがありますので、注意しましょう。

スクリプトトリガについての詳しい内容は、Claris FileMaker Pro のヘルプページをご参照ください。

「サーバー上のスクリプト実行」スクリプトステップ

「サーバー上のスクリプト実行」スクリプトステップは、指定したスクリプトをFileMaker Pro ではなく、FMSE(FileMaker Server Script Engine)が実行するものです。そして、「サーバー上のスクリプト実行」は多くの場合、FileMaker Pro でスクリプトを実行するよりも処理が速いです。
「終了まで待つ」のオプションがあり、オン(待つ)・オフ(待たない)が選択できます。
オンの場合は、スクリプトが終了するまで待ち、スクリプトの結果を受け取ることができます。オフの場合はスクリプトの開始のみ命令して、すぐに呼び出し元スクリプトに戻ります。この時、スクリプトの結果は取得できません。

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

FileMaker 2023 から実装された「コールバックを使用してサーバー上のスクリプト実行」スクリプトステップは、「サーバー上のスクリプト実行」スクリプトステップの終了まで待つオプションがオフの状態でスクリプトをキックしますが、スクリプトの終了時に実行するスクリプトが設定でき、スクリプトの結果も取得できるものです。

こちらについては、過去に記事を書いていますので、ご参照ください。

URLスキーム(fmpプロトコル)

「URL を開く」スクリプトステップ、または、ブラウザから「fmp」から始まるURLを指定することによってスクリプトが実行できます。この方法では、外部データソースに設定されていないファイルのスクリプトも実行できます。URLスキームでスクリプトを実行する場合は、実行した端末にインストールされている FileMaker Pro (iOSなら FileMaker Go)で実行されます。

記述方法は以下の様になります({}内は任意の値を設定してください)。
fmp20://{アカウント名}:{パスワード}@{ホスト}/{ファイル名}?script={スクリプト名}&param={引数}&option={オプション番号}&{$変数名}={変数の値}

スクリプトを実行する場合は、「&pram」以降は省略可能です。

optionについては以下のページが参考になります。
https://help.claris.com/ja/pro-help/content/options-for-starting-scripts.html

実際にURLを設定する例を見てみましょう。
「sample.com」というホストにある「customer.fmp12」のスクリプト「search」を引数「123456」を設定し、アカウント名「admin」パスワード「password」で実行したい場合は以下のような記述になります。

fmp20://admin:password@sample.com/customer?script=search&param=123456
(このURLは実際には無効です)

最初にある「fmp20」は、FileMakerのバージョン番号です。FileMaker 19 の場合は「fmp19」となります。これまでの傾向で見ますと、次のバージョンがリリースされた時は、おそらく「fmp21」となると思いますが、変更される可能性もあるので、リリースされた時に仕様を確認しましょう。

FileMaker Server Admin Console でスケジュールを設定

FileMaker Server Admin Console の構成タブの「スクリプトと検証スケジュール」でスクリプトのスケジュール実行が設定できます。

スクリプトは指定したアカウントで FMSE が実行します。
スクリプトの結果は取得できません(スケジュールで設定されたスクリプトが終了した時点でスケジュール実行が完了するので、スクリプトの結果を受け取るスクリプトがないので、受け取ることができません)。

FileMaker Data API

FileMaker バージョン17から実装された、FileMaker Data API の「Execute Script」でスクリプトを実行できます。

FileMaker からのリクエスト方法は、「URLから挿入」スクリプトステップで以下のURLを設定し、cURLオプションで GET メソッドを使用します。
https://{ホスト名}/fmi/data/{version}/databases/{database}/layouts/{layout}/script/{scriptName}

詳しい実行方法については、ドキュメントをご覧ください。
ドキュメントは以下のURLで確認することができます({ホスト名}の部分はお使いの環境のホスト名を設定してください)。
https://{ホスト名}/fmi/data/apidoc/

また、FileMaker Data API では、この「Execute Script」の他にも「レコードの作成」や「検索の実行」などで「script.prerequest」、「script.presort」および「script」引数を設定することでスクリプトを実行することができます。
詳しくは Claris FileMaker 2023 Data API ガイド をご参照ください。

Webビューア内のJavaScriptの関数「FileMaker.PerformScript」または「FileMaker.PerformScriptWithOption」

Web ビューアで Web ページのロードが終了した後、JavaScript で「FileMaker.PerformScript」または「FileMaker.PerformScriptWithOption」の関数を呼び出して現在のファイルで FileMaker スクリプトを実行することができます。

詳しくは以下のページをご覧ください。
https://help.claris.com/ja/pro-help/content/scripting-javascript-in-web-viewers.html

スクリプト引数とスクリプトの結果

スクリプトの実行では、スクリプト引数とスクリプトの結果が非常に重要な要素となります。簡単に表にまとめてみました。

スクリプト実行方法スクリプト引数の設定スクリプトの結果の取得
スクリプト実行
スクリプトトリガ
サーバー上のスクリプト実行◯(終了を待つ:オン)
☓ (終了を待つ:オフ)
コールバックを使用してサーバー上のスクリプト実行◯ ※
URLスキーム
スケジュール実行
FileMaker Data API
FileMaker.PerformScript
FileMaker.PerformScriptWithOption

※ ちょっと複雑な箇所があるので以下のページの注意点をご参照ください。
https://kotovuki.co.jp/archives/14255

まとめ

FileMaker スクリプトを呼び出す方法はいくつかあります。状況に応じて使い分けすれば、様々な局面でスクリプトを実行することができます。

スクリプト作成をした後は、デバッグ作業がありますが、次回はそれぞれの方法でスクリプトを実行したときのデバッグ方法について詳しく見ていきたいと思います。