タグ: FileMaker19

 
FileMakerとWebビューア(内のJavaScript)とのデータ受け渡し方法について説明します。バージョン18までのFileMakerはこの受け渡しが少し複雑だったのですが、バージョン19で簡単に扱えるようになりました。
 

 

1.はじめに(Webビューアについて)

FileMakerバージョン8.5で、Webビューアという機能が導入されました。Webビューアを使うと、FileMakerのレイアウトの中でWebページを表示することができます。
 
例えば、

  • 商品名フィールドの値をキーワードにして、Google検索の結果を表示する
  • 住所フィールドの値をもとに、Googleマップで地図を表示する

といったことが、ノーコードで実現できるようになっています。
 
さらに、コードを書く必要はありますが、JavaScript(ライブラリ)を使って

  • 成績データを複雑なグラフで表示する
  • イベントデータをカレンダー形式で表示する
  • マウスでお絵描きした結果をFileMakerのフィールドに保存する

といったことができるようになります。
 
ここで必要になるのが、FileMakerとWebビューア(内のJavaScript)とのデータの受け渡しです。バージョン18までのFileMakerはこのデータの受け渡しが少し複雑だったのですが、バージョン19で簡単に扱えるようになりました。
 
リッチな表示や動きを実現するJavaScript(ライブラリ)の解説については他の記事におまかせするとして、ここでは簡単な例を用いて、データ連携の基礎について説明したいと思います。

 

2.準備

今回は、FileMakerデータベースのフィールドと、Webビューア内のinputフィールドとの間でデータを受け渡しすることにします。
 
まず、sampleテーブルにFieldAというフィールドを作成します。

 
FileMakerのレイアウトにfieldAフィールドと[Webビューアへ]ボタンを配置します。
その右側にWebビューアを配置します。

 
Webビューアにオブジェクト名を付けます。今回は[viewer]とします。

 
Webビューアの中に、inputフィールド(fieldBとします)と[FileMakerへ]ボタンを表示するためのHTMLソースを用意します。
用意したソースを、「Webビューアの設定」画面の「Webアドレス」に貼り付けます。

"data:text/html,"
"<html>
  <head>
  </head>
  <body>
    <input id="fieldB" type="text" />
    <button>FileMakerへ</button>
  </body>
</html>"

 
また、
・Webビューアの内容とのインタラクションを許可
・JavaScriptによるFileMakerスクリプトの実行を許可
にチェックを入れます。


 
準備は以上です。この後、データの受け渡しの処理を組み込んでいきます。
 

3.FileMakerからWebビューア内のJavaScriptへ

FileMakerの [Web ビューアで JavaScript を実行] スクリプトステップで、JavaScriptの関数を実行することができます。
 
【Webビューア側】
HTMLソースに[callFromFM]関数を記述します。
この関数は引数を1つ受け取り、fieldBにセットします。

"data:text/html,"
"<html>
  <head>
  <script language='JavaScript'>
      function callFromFM(param){
        const target = document.getElementById('fieldB');
        target.value = param;
      } 
    </script>
<input id="fieldB" type="text" />
<button>FileMakerへ</button>
  </body>
</html>"

 
【FileMakerレイアウト側】
ボタンを右クリックし、[ボタン処理]-[単一ステップ]を選択します。

 
[Web ビューアで JavaScript を実行]スクリプトステップを選択し、Webビューアの名前、呼び出すJavaScript関数名、引数を指定します。

 
fieldAに値を入力して[Webビューアへ]ボタンを押すと、WebビューアのfieldBに反映されます。
 

4.Webビューア内のJavaScriptからFileMakerへ

JavaScriptの[FileMaker.PerformScript]関数もしくは[FileMaker.PerformScriptWithOption]関数で、FileMakerのスクリプトを実行することができます。
 
【FileMakerレイアウト側】
[CallFromJS]スクリプトを作成します。
このスクリプトは引数を受け取り、fieldAにセットします。


 
【Webビューア側】
HTMLソースに"buttonClick"関数を記述します。
この関数はfieldBの値を引数として、FileMakerの[callFromJS]スクリプトを実行します。
ボタンのonClickイベントで、この関数を実行するように設定します。

"data:text/html,"
"<html>
  <head>
    <script language='JavaScript'>
      function callFromFM(param){
        const target = document.getElementById('fieldB');
        target.value = param;
      } 
      function buttonClick(){
        const target = document.getElementById('fieldB');
        FileMaker.PerformScript('callFromJS', target.value);
      }
    </script>
  </head>
  <body>
    <input  id='fieldB'>
    <button onClick='buttonClick();'>FileMakerへ</button>
  </body>
</html>"

fieldBに値を入力して[FileMakerへ]ボタンを押すと、FileMakerレイアウトのfieldAに反映されます。
 

5.まとめ

FileMakerレイアウトの中に置いたWebビューアに対して、1つの値を受け渡す方法について説明しました。JavaScriptでグラフやカレンダーを表示するためにはたくさんの値のやり取りが必要になりますが、基本は変わりません。いろいろと試してみましょう。

詳細

■fmsadminコマンドメモ一覧


 すぐ忘れちゃうよく使うコマンドまとめ。
 コンソールを使用するので、中級~上級レベルの内容となります。

クラリス社のFileMaker Server コマンドラインリファレンスはこちらになります。

■設定確認


FileMakerServer18からコマンド上でしかサーバーの詳細設定できないものが存在します。
(例えば、キャッシュ設定や接続人数設定などがコマンド操作に変更なりました)
アドミンコンソール画面で設定できないときはコマンドで確認しましょう!

1. 簡易表示

 serverconfigでは、サーバー設定のみの内容を表示します。

 fmsadmin get serverconfig

結果(デフォルト値が出ています)

BackupInterval = 5 [default: 5, range: 1-99]
BackupPauseTime = 6 [default: 6, range: 6-60]
CacheSize = 512 [default: 512, range: 64-1048576]
HostedFiles = 125 [default: 125, range: 1-125]
LogSize = 40 [default: 40, range: 1-1000]
ProConnections = 250 [default: 250, range: 0-2000]
ScriptSessions = 100 [default: 100, range: 0-500]
SecureFilesOnly = true [default: true]
ServerDiscovery = true [default: true]
StatsInterval = 30 [default: 30, range: 1-300]

BackupInterval :プログレッシブバックアップの頻度(分単位)
BackupPauseTime :
CacheSize :キャッシュメモリ(メガバイト単位)。
HostedFiles: ホストできるカスタム App の最大数
LogSize :各ログファイルの最大サイズ(メガバイト単位)。
ProConnections : Pro Advanced クライアント接続の最大数。
ScriptSessions :サーバー上で同時に実行できるスクリプトセッションの最大数。
SecureFilesOnly :フルアクセス権限セットを割り当てられたパスワードで保護されたアカウントを持つカスタム App のみをホスティング用に開くことができるかどうか。
StatsInterval: FileMaker Server が統計情報を収集する頻度(秒単位)

2.詳細表示

 serverprefsではサーバー環境設定の内容を表示します。
 サーバー設定よりもより詳しい設定を確認することが出来ます。そのため、サーバー設定と同じ内容も一部あります。

fmsadmin get serverprefs

結果(デフォルト値が出ています)

MaxGuests = 250 [default: 250, range: 0-2000]
MaxFiles = 125 [default: 125, range: 1-125]
CacheSize = 512 [default: 512, range: 64-1048576]
UseCustomHostName = true [default: true]
CustomHostName = GPSE-FM
MaxLogSize = 40 [default: 40, range: 1-1000]
UseStatsLog = false [default: false]
StatsTimeInterval = 30 [default: 30, range: 1-300]
UseSecureConnection = false [default: false]
IncrementalBackupInterval = 5 [default: 5, range: 1-99]
AllowPSOS = 100 [default: 100, range: 0-500]
UseTopCallsLog = false [default: false]
UseClientStatsLog = false [default: false]
RequireSecureDB = true [default: true]
CollectFeatureInfo = true [default: true]
DenyGuestAndAutoLogin = false [default: false]
WPERedirect = true [default: true]
HSTSEnable = false [default: false]
ServerDiscovery = true [default: true]
IncrementalBackupPauseTimeoutSec = 6 [default: 6, range: 6-60]
AuthenticatedStream = 1 [default: 1, range: 1-2]
AllowUnknownSSLCertificateRevocation = false [default: false]
ParallelBackupEnabled = false [default: false]

.
.

■よく使う初期設定コマンド

 ここからは、サーバー設定時の初期設定でよく使うコマンドになります。

キャッシュ設定

デフォルト値だと小さいので、各マシンごとに設定しなおしましょう。
 キャッシュはマシンのキャッシュの半分くらいの数値がおすすめです。
 99999のサイズをマシンのキャッシュに合わせた数値にして実行します。

fmsadmin set serverconfig cachesize=99999

パスワード無しでファイルアップの許可時

デフォルトはパスワード無でのファイルはアップ許可されていません。
 パスワードの設定が難しいファイルが存在した場合、無効の設定をおこないます。

fmsadmin set serverconfig securefilesonly=false

バックアップ設定

1.リスト確認

 バックアップ設定をコマンドでリスト表示できます。
 コンソール画面では詳細を見ることが出来ない初期から入っている自動バックアップ設定も、ここでは確認できます。

fmsadmin LIST SCHEDULES

結果

ID Name                Type   Last Completed  Next Run         Status
1  FMS                 Backup 2022/09/02 0:00 enable         OK
2.自動バックアップの実行無効設定

 自動バックアップを無効にするときはdisable を指定。
 ※1はバックアップリストのデフォルトで1で入っているため、1で指定。

fmsadmin disable schedule 1

 戻すときはenable を指定。

fmsadmin enable schedule 1 
3.自動バックアップの実行時間の変更
fmsadmin set backuptime HH:MM

 接続人数の制限

制限を行いたい場合、99の部分を接続する人数で実行します。

fmsadmin set serverprefs MaxGuests=99

■その他

[ホスト]表示時の アカウントダイアログボックスの機能のオフ

Admin Console画面上で
 構成 > FileMaker クライアント > クライアントアプリケーション
 この画面の「クライアントアプリケーションでのデータ」を 「無効」に設定

詳細

FileMakerではアプリを起動することが出来ます
初めてでも実行できるものからやってみませんか?

  • 簡単なメール起動
  • アプリ起動1:ブラウザー起動
  • アプリ起動2:ディレクトリを指定して起動
  • アプリ起動3:それでも出来ないものは 
  • リモートアクセスも起動?!

ということで簡単に試せるファイルを作成してみました。

●環境

・Windows
・FileMaker19
 お試しファイルはこちら >> ダウンロードファイル
.

実行しているスクリプトは「T_EventOpen」です。こちらをご確認ください。
リストに表示しているドロップダウンの値をIf文で判別して処理の切り替えを行っています。
アイコンが付いているボタンをクリックすると起動します。

1)メール起動

 [メールを送信]スクリプトステップでメールアドレスを指定してメールソフトを起動。これは基本ですね!

.

2)アプリ起動1:URLをブラウザー起動

 ブラウザーアプリの指定で起動してみましょう
 今回三つ記述していますが、お試しファイルではChromeが起動します!
 ※もしもChromeが入っていない場合、「T_EventOpen」スクリプトを開いてコメントアウトしているedgeかIEのスクリプトを有効化し、Chromeはコメントアウトしてください。

 Chrome.exe {URL}
 msedge.exe {URL}
 IEXPLORE.exe {URL}


.

3)アプリ起動2:ディレクトリを指定して起動

 ディレクトリを指定してみましょう
 Windowsのディレクトリをエクスプローラーで起動できます。記述は下記になります

  explorer {指定ディレクトリ}

 デスクトップをご自身のデスクトップのアドレスに書き換えて実行してください。
 (例:C:\Users\admin\Desktop)

.

4)アプリ起動3:それでも出来ないものは 

 アプリ指定のExeで指定しても起動しないものも中にはあります。
 その場合はコマンドで実行します。
 今回は、ローカルのFileMakerをコマンド起動させるようにします。

 cmd /c {アドレス}

 実行動作としては、「cmd」でコマンドプロントを立ち上げます。
 次にオプションの「/c」で実行後のコマンドプロントを閉じています。
 ここでの注意点は、お試しファイルではアドレスが「C:\Users\admin\Desktop\Event送信_サブファイル.fmp12」となっていますが、
 こちらはご自身のデスクトップに「Event送信_サブファイル.fmp12」名の空ファイルを作成・設置をし、ディレクトリ(C:\Users\{ログインユーザー名}\Desktop\)に書き直してください。

.

〇リモートアクセスも起動?!

 実はコマンド実行でIPを指定することでリモートアクセスの起動も出来ちゃいます。
 これは特殊な内容ですが、外部にあるサーバをリモート管理する場合に、IP管理が大変! となったら便利ですよ!
 お試し版にはIPは登録していませんが、XXX.XXX.XXXの箇所を修正して接続可能なリモートアクセス先に設定することで起動ができます。

 
.

そのほか

いかがでしたか?
応用としては、サイトやIP、社内ソフトの管理ファイルの作成も可能になります。
スクリプト「T_EventOpen」を弄ってみましょう

Event送信を駆使すれば、パラメータを持たせて付随する情報を載せることも可能ですね。
また、ログインユーザーを設定して、どのユーザーが何を見ることができるか管理することも可能です。

詳細

時々、WEB画面のような可変項目や横並びも対応した内容の画面表示の要望があった場合、Filemakerのポータルでは横並び表示はできません。その対処として「Webビューア」という選択肢なんていかがでしょう?

Webビューアは
HTMLコードに書き直して可変項目も対応!
簡単なものから複雑なものまで!

できますが!今回は初級編として簡単なJavaScriptを使用した方法で軽く触れるだけです。お遊びレベルの特にエラーチェックもないレジっぽいシステム風なもので試してみましょう!

.

Webビューアの良いところはWEB画面と同じレイアウトが出来るという事でしょう。
そしてFileMakerでは面倒な横並びがCSSで組めば簡単に出来るという点です。

という事で横並びにしてみました!

.

★仕様

シンプルに、商品名をクリックしたら、右のポータルの明細一覧に追加されるという動きです!
.

サンプルファイル: WEBビューア.fmp12
.

★初級レシピ

・対象バージョン
FM19

データーベース

【Info】テーブル

  • Ct_HTML
  • Ft_Js
  • Ft_CSS

【商品マスタ】

  • Ft_商品名
  • Fn_金額

【レシート】テーブル
レシートっぽくするためのヘッダーです。
【レシート明細】テーブル
Webビューアで表示しクリックしたものを入れる場所です。
.
.

実際の画面

お試し画面では、生成された計算フィールドのHTMLソースと、編集可能なJavaScriptフィールドとCSSフィールドを表示しています。
実際にいじりながら画面の変化がみられるので、好きな幅や色味など変更してみましょう!。

ダウンロードしたファイルを見て、軽く弄って分かった方は以下は説明なので読まなくても大丈夫です。
どんどんカスタマイズしてみましょう!
.


.

★中身の説明

Webビューアで重要な場所のみ説明しています。

.

リレーション

とってもシンプル。このリレーションは今回のWebビューアのボタンを押下した後のデータ作成に必要なリレーションです。
ここでは、レシートテーブルとのリレーションで「このリレーションシップを使用して、このテーブルでのレコード作成を許可」にチェックしておきます。
チェックすることで面倒な新規レコード作成をなくしています。

.

フィールド設定

★HTMLの計算フィールド

HTMLを生成する基本枠は計算フィールドにしています。
メインの値を表示するHTMLはカスタムしやすく変数にしています。変数にすることで書き換えるたびにレコードの更新日が変わるという事を阻止します。

記述の説明
    • <HTML lang=’ja’>  …は文字化けしないように日本語指定するために必要です。
    • <meta charset=’UTF-8’ /> …はFileMakerの文字コードに合わせてUtf-8だよと教えるために記述。
    • Ft_CSS …CSSフィールドを置くことで、ここに置くことで書き換えたものが即時反映されます。
    • $$HTML …スクリプトでHTMLを生成したものを変数にセットし、Bodyに出力しています。
    • Ft_Js  …JavaScriptフィールドです。ここに置くことで書き換えたものが即時反映されます。
.

★JSの設定フィールドの中身
document.addEventListener('DOMContentLoaded',function(){
var btns = document.querySelectorAll('.button');
for(var i = 0; i < btns.length; i++){
btns[i].addEventListener('click',function(){
this.style.color = 'blue';
FileMaker.PerformScriptWithOption("JS_addMeisai", this.id + '\n' + 1 );
},false);
}
},false);

今回はシンプルなので、難しいことはしていません。
素のJavaScriptでDivタグのClass名「button」がクリックされたらFileMakerのスクリプトをキックするという動きです。
ポイントはこの後説明する商品名をボタンとして表示させるHTMLと合わせる部分があるという事です!
まずは、DivタグのClass指定をしている「button」がクリックされたら、IDの値(ここでは商品IDがはいっています)を取得します。
そのあと、FileMaker独自のJavaScriptコードでスクリプト名と引数記述します!

Clarisのヘルプはここ
公式:FileMaker.PerformScriptWithOption (スクリプト, 引数, オプション);
ソースの記述箇所: FileMaker.PerformScriptWithOption("JS_addMeisai", this.id + '\n' + 1 );

引数を改行区切りで連結することで複数の値を引数として設定できます。今回は簡単に個数としての1を足しています。
.

★CSSの設定フィールドの中身

ここで横並びの設定を行います。
Webビューアの横幅サイズをCSSで調整するとき、%だとうまく取得できずに幅調整がうまくできないため、ここでは、ボタンを囲む親のDIVタグで横幅サイズを指定し、子のクラスで良い感じに設定するようにflex-basisで幅を%で指定しています。
シンプルに設定しているので自由に変更して、気に入るデザインに変えていきましょう!

.

Webビューア設定

ここで重要なのはカスタムWebを選択、HTMLを生成する計算フィールドを指定し、JavaScriptのチェックをOnにすることとです。

.

スクリプト

★HTML生成スクリプト

このスクリプトでは、横並びのボタン用のHTMLを生成しています。
まず、商品マスタに移動して、ループ処理で商品名と商品マスタIDを取得しています。
その際に、HTMLコードで取得した商品名と商品マスタIDを挟みながら変数に追加していってます。
ポイントは、HTMLコードの生成です!
ClassはJavaScriptで拾うために決めた”button"を指定。Idは、商品IDをセットします(レシート明細にセットするのに使います)
変数はすでに計算式に埋め込んでいるので自動で反映されます。画面が重くなって読み込まなくなってきた場合は「ウインドウ内容の再表示」スクリプトを活用しましょう。

.

★JavaScriptからキックするファイルメーカー内のスクリプト

次に、JavaScriptでキックされるスクリプトです。
JavaScriptで記述する名称と同じ名称を使用します。なるべく半角英数字でスクリプト名を設定しましょう(設定時の全角などの名称間違い防止のために!)
スクリプト引数でJavaScriptで設定した引数を取得し、セットしていきます。改行区切りで複数取得できるのでGetValueで取得しなおしましょう。
あとは、いつも通りスクリプトを組むだけ!簡単!

.
以上で、今回の簡単Webビューア画面の説明は終了です。

ココから細かい設定を追加していくとより複雑なものが出来ていきます。

詳細

2021年06月時点
FileMaker Pro 19になってからホストのファイルが、ある動作の時のみ開かない!!という現象が確認されています。

【開かない手順】

  1. FileMaker Pro 19を起動
  2. メニューの「ファイル」 >「 ホスト」 を表示し、 開きたいファイルがあるホスト名を選択
    (※お気に入りに追加したホストが表示されます)
  3. ファイルを選択

この順番の場合ファイルが開きません!

選択して開くを押しても何も起きずにポップアップ画面が終了。

【開く手順】

Aパターン

  1. FileMaker Pro 19を起動
  2. お気に入り登録したファイル or 最近使ったファイル から選択して開く



Bパターン

  1. FileMaker Pro 19を起動
  2. 何かしらファイルが開いてる状態(ローカルファイルを開く or  お気に入り or 最近使ったファイル などで)
  3. メニューの「ファイル」 >「 ホスト」 を表示し、 開きたいファイルがあるホスト名を選択
  4. ファイルを選択し、開く

Cパターン

  1. FileMaker Pro 19を起動
  2. メニューの「ファイル」 >「 ホスト」 >「 ​ホストを表示」でホスト一覧画面を表示
  3. 開きたいファイルがあるホスト名を選択後、ファイルを選択し、開く

Dパターン

  1. ショートカットを作成し直接開く方法
    (fmp://{IP}/ファイル名 or fmp19://{IP}/ファイル名)をショートカットのアドレスに書き込み、ワンクリックで開きます。


!注意!


2020 年より、Claris 社では継続中の年間ライセンスをご利用のお客様と永続ライセンスで有効な保守契約をご利用のお客様にのみ製品リリース(新機能、バグ修正、オペレーティングシステムとの互換性)が提供されます。

もしも永続ライセンスのみで保守契約をされていない場合は、この問題が解消されない可能性がありますので、上記パターンでご使用ください。

詳細