FileMaker 19の新機能「Web ビューアで JavaScript を実行」の使い方とインスペクタの活用方法

こんにちは。

株式会社フルーデンスの小巻です。

2020年05月21日にFileMaker 19がリリースされました。

今回は、タイトルの通りFileMaker 19の新機能「Web ビューアで JavaScript を実行」の使い方とインスペクタの活用方法について書きます。

サンプルファイル

以下のリポジトリからCloneか、ダウンロードしてください。

https://github.com/frudens/filemaker-webviewer-javascript

https://github.com/frudens/filemaker-webviewer-javascript/archive/master.zip

filemaker19-perform-javascript-in-web-viewer-15

filemaker19-perform-javascript-in-web-viewer-16

FileMakerからWeb ViewerのJavaScriptを実行(イメージ)

以下のスクショのように実行できます。

左のFileMakerの「fmToWeb」というボタンをクリックすると、Web ViewerのJavaScriptが実行されます。

filemaker19-perform-javascript-in-web-viewer-1

Web Viewerの準備

ここから、具体的な手順になります。


FileMakerのWeb Viewerの設定を確認します。

Web Viewerにオブジェクト名を設定し、「JavaScript による FileMaker スクリプトの実行を許可」をtrueにします。

filemaker19-perform-javascript-in-web-viewer-2

FileMakerのスクリプトを準備

追加された「Web ビューアで JavaScript を実行」ステップを追加します。

スクリプト

変数を設定 [ $param ; 値: JSONSetElement ( "" ; [ "name" ; webviewer::name ; JSONString ] ; [ "age" ; webviewer::age ; JSONNumber ] ) ]
Web ビューアで JavaScript を実行 [ オブジェクト名: "web" ; 関数名: "fmToWeb" ; 引数: $param ]

filemaker19-perform-javascript-in-web-viewer-3

JavaScriptのfunctionを確認

function fmToWeb(param) {
  console.log(param)
  const fmParam = JSON.parse(param)
  document.getElementById("name").value = fmParam.name;
  document.getElementById("age").value = fmParam.age;
  FileMaker.PerformScript("setResultFromWeb", JSON.stringify(fmParam));
}

filemaker19-perform-javascript-in-web-viewer-4

JavaScriptからFileMakerのスクリプトを実行

functionの最後に「FileMaker.PerformScript()」を実行しています。

この関数を実行すると、FileMakerの任意のスクリプトを実行できます。

FileMaker.PerformScript("setResultFromWeb", JSON.stringify(fmParam));

FileMakerには、あらかじめ「setResultFromWeb」というスクリプトを作成しておきます。

filemaker19-perform-javascript-in-web-viewer-5

こうすることで、JavaScriptの実行結果をFileMakerに戻すことができます。

Web Viewerのインスペクタを表示

JavaScriptで様々なUIウィジェットを追加したり、コードをデバッグする際にインスペクタがないと、効率が悪いため、インスペクタを表示できるようにしておきましょう。

インスペクタを表示・活用する方法

以前まで、beezwaxさんの記事に書かれているコマンドを実行すると、表示することができました。
しかし、現在の私の環境では、記事に書かれているコマンドを実行しても、表示することができなくなってしまいました。

Enable WebKit debugger in FileMaker Web Viewer
https://blog.beezwax.net/2015/07/20/enable-debugger-for-a-filemaker-web-viewer/

代替案を模索していましたところ、MBS Pluginで代替できることが分かりました。
(引き続き模索しますので、なにか良い方法があれば、記事にします。)

Monkeybread Software – MBS FileMaker Plugin: WebView.SetPreferences
http://www.mbsplugins.eu/WebViewSetPreferences.shtml

試される方は、MBS Pluginをインストールしてください。
継続して使われるようであれば、ライセンスを購入しましょう。

Web Viewerを右クリックで確認

Web Viewerのオブジェクト上で右クリックをすると「再読み込み」のみ表示されるはずです。

filemaker19-perform-javascript-in-web-viewer-6

MBSプラグインの関数を実行

データビューアを表示し、以下の関数を評価してください。
戻り値が「OK」となれば正常終了しています。

MBS("WebView.SetPreferences"; "web"; "developerExtrasEnabled"; 1)

filemaker19-perform-javascript-in-web-viewer-7

Web Viewerを右クリックで「要素の詳細を表示」

改めて、Web Viewerのオブジェクト上で右クリックをすると「再読み込み」に追加して「要素の詳細を表示」が表示されるはずです。

「要素の詳細を表示」をクリックします。

filemaker19-perform-javascript-in-web-viewer-8

インスペクタを「別のウインドウに切り離す」

Web Viewer内にインスペクタが表示されるため「別のウインドウに切り離す」をクリックします。

filemaker19-perform-javascript-in-web-viewer-9

インスペクタが別ウインドウで表示されます。

filemaker19-perform-javascript-in-web-viewer-11

インスペクタのコンソールを確認

インスペクタが表示できましたので、コンソールタブに移動し「fm…」とタイプすると、JavaScriptの関数が補完され、関数を実行することができます。

filemaker19-perform-javascript-in-web-viewer-12

インスペクタのコンソールで「FileMaker.PerformScript()」を実行

コンソール上で、JavaScriptからFileMakerのスクリプトを実行するための関数「FileMaker.PerformScript()」を実行してみます。

あらかじめ作成しておいたスクリプト「setNoteFromConsole」に引数を渡して、実行してみます。

filemaker19-perform-javascript-in-web-viewer-13

実行され「note」フィールドに、引数を設定することができました。

filemaker19-perform-javascript-in-web-viewer-14

あとがき

今までも「fmp://hoge」というURLスキームを使えば近しいことはできましたが、今回の「Web ビューアで JavaScript を実行」ステップでより簡単に実行できるようになりました。

JavaScriptとの連携ができると、以下のようなことが簡単に実現できます。

たとえば…

  • npmモジュールの活用
  • 正規表現
  • テキストをバイト文字での計算
  • 日付ピッカー
  • メールアドレスのバリデーション
  • FullCalendarや各種UIウィジェットとの連携
  • などなど

ただ、WindowsのWeb ViewerはIE11ベースのため、JavaScript(ES6)で書くとIE11で動きませんので、注意が必要です。

そのような場合は、webpackやBabelを使って、トランスパイルする必要があります。
この点も、もしご要望があれば記事にしますが、ひとまず色々とググってみてください。

また、今回のFileMaker 19から、Linux版のFileMaker Server(プレビュー版ですが…)がリリースされたり、フロントエンドの開発時でもcliツールを使うことが一般的です。
WindowsもWSL2がリリースされますし、今までターミナルを使ったことがない方は、この機会に積極的にターミナルを使うことをお勧めします!

ターミナルについても、記事を書きたいと思います。
全てとは言いませんが… ターミナルでの操作が慣れると、GUIよりも生産性がかなり高まりますので、お勧めです!

前回書いた記事も「その1」で止まっているので、続きを書きたいと思います。
API GatewayとAWS Lambda(Node.js)を使い効率よくWebサービスと連携する その1
https://frudens.jp/filemaker-aws-apigateway-lambda/

2014年からフリーランスとして活動し、2016年に株式会社フルーデンスを設立する。 最近は、GolangでCLIツールを開発したり、GAE/GoでWebアプリケーションを開発しています。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください