Claris FileMaker搭載のAPIについての備忘録2
- 田中
- 8月28日
- 読了時間: 5分

こんにちは、ティーマネジメントの田中です。
FileMaker Server / Cloud で使用できるAPIについて、なんとなくはわかるけど、
ヘルプを読んでもよく分からない、
実際使うとなるとどうすればいいのか…と悩んだ経験がありました。
FileMaker Pro / Go から、FileMaker Server / Cloud のAPIを利用する方法について、
いろいろ試行錯誤した結果、なんとかやりたいことは行えるようになりましたので、
記事として残したいと思います。
Claris FileMakerで使用できるAPIの種類については、前回記事をご覧ください。
今回は、Admin APIを使ってサーバー情報を取得する方法について解説いたします。
やりたかったこと
ローカル環境(インターネット接続あり)のFileMaker Pro / Go から、
①FileMaker Serverのメタデータ取得し、サーバー現在時刻を取得する
②FileMaker Serverで共有されているカスタムAppのレコードを更新する
①について解説いたします。
API利用の基本的な流れ
APIを利用する際には、以下の手順を踏んで操作を行います。
・ログイン(認証)
アカウント名とパスワードを用いてログインし、認証用トークンを取得します。
・操作の実行
取得した認証用トークンを使って実際のAPI操作を行います。
AdminAPIの場合:サーバ情報の取得等
DataAPIの場合:データレコードの取得・編集・削除など
・ログアウト
作業が終了したら、認証用トークンを用いてログアウトします。
接続の有効期間について
FileMakerの各種APIでは、最後にトークンを使用してから15分間、接続が維持されます。この間は同時接続ライセンス数にカウントされます。
利用できるAPI操作
FileMaker APIでは、主に以下のHTTPメソッドが利用可能です。
・GET
・POST
・PATCH
・DELETE
それぞれの操作により、情報取得、登録、更新、削除といった処理が行えます。
APIドキュメントの場所
APIドキュメントが保存されている場所は、OSによって異なります。
Windows [ドライブ]:¥Program Files¥FileMaker¥FileMaker Server¥Documentation¥Admin API Documentation |
Linux /opt/FileMaker/FileMaker Server/Documentation/Admin API Documentation |
macOS /ライブラリ/FileMaker Server/Documentation/Admin API Documentation |
インストール場所等によって異なりますので、ご利用の環境をご確認ください。
①ログイン(認証)
今回はFileMaker Pro/Goから、FileMaker Admin APIを利用するため、
FileMakerのスクリプトステップ「URLから挿入」を使用して情報を取得します。
[SERVER_ADDRESS]にはFileMaker Server/Cloudのアドレスを入れてください。
cURLオプションには、事前に「テキストを挿入」スクリプトステップで、下記の文字列を変数に入れておきます。
変数:$curl
curl -X POST \ -H "Authorization: Basic [YOUR_ACCOUNT]" \ -H "Content-type: application/json" \ -H "Content-Length: 0" |
[YOUR_ACCOUNT]には、Admin Consoleへログインするためのアカウント、パスワードを、「:」(半角コロン)で区切ったものを、Base64エンコードした文字列を入れてください。
Base64エンコードはFileMaker内の関数で行えるため、事前に変換しておきます。
Base64EncodeRFC ( 3548 ; “[アカウント]” & ":" & “[パスワード]” ) |
Base64Encode関数で変換した場合、変換後の文字列に改行が含まれるため、
FileMakerの「URLから挿入」関数がうまく動作しません。
Base64EncodeRFC関数は、オプションを指定することで改行なしで変換することが可能のため、
こちらを使用しています。
上記のスクリプトステップをまとめると、以下のようになります。

URLやアカウント、パスワードに間違いがない場合、
グローバル変数「$$json」をデータビューアで確認すると、以下のような結果が得られます。

tokenが、Admin APIを利用する際に必要な認証トークンとなります。
この結果からtokenを取りだすには、FileMakerの「JSONGetElement」関数を使用します。
また、正常に取得できている場合、messagesのtext部分が「OK」となっているため、こちらでも判断可能です。
それぞれ、以下のように記載できます。

ステータスの取得 JSONGetElement ( $$json ; "messages[0].text" ) |
トークンの取得 JSONGetElement ( $$json ; "response.token" ) |
②操作の実行
では、次に実際にこのトークンを使って、Admin APIを利用します。
今回はサーバーの時間を取得したいので、
サーバーメタデータの取得をAdmin APIから行います。
サーバーメタデータを取得する際は、「URLから挿入」スクリプトステップを次のように指定します。
URLから挿入 ターゲット:$$serverMeta URLを指定:https://[SERVER_ADDRESS]:443/fmi/admin/api/v2/server/metadata |
cURLオプション内にトークンを含める必要があります。
先ほどグローバル変数「$$token」に認証トークンを格納したので、その変数をそのまま利用します。

"curl -X GET \ -H \"Authorization: Bearer " & $$token & "\" \ -H \"Content-type: application/json\" -H \"Content-Length: 0\"" |
計算式内に直接cURLオプションを記載する場合、「”」(ダブルクォーテーション)は「\」(バックスラッシュ)を用いてエスケープさせます。

このスクリプトを実行すると、$$serverMetaに以下のような結果が得られます。

サーバーの名前、バージョン、ホストの時間などが確認できます。
こちらもJSON形式になっておりますので、JSONGetElement関数を用いて取り出せます。

JSONGetElement ( $$serverMeta ; "response.ServerHostTime" ) |
$$serverTimeをデータビューアで確認すると、以下のようになっていることがわかります。

タイムスタンプが取得できました。
FileMakerのタイムスタンプ形式とは形式が異なるものとなってるので、変換する必要があります。
FileMaker関数を用いた変換の一例として載せておきます。
Let ( [ ~servertime = $$serverTime ] ; GetAsTimestamp ( Substitute ( ~servertime ; [ "-" ; "/" ] ; [ "T" ; " " ] ) ) ) |
PC、iOSデバイスなどの時刻がサーバー時間と異なっている場合の不正防止などを、このサーバー時間を利用して行うことができます。
もし認証に失敗する場合、APIの15分制限を過ぎている可能性がありますので、①をやり直してみてください。
③ログアウト
このままでも15分経てば認証トークンが無効になるのですが、
不要になったものはログアウトしておきましょう。
ログアウト処理を行う際は、URLから挿入スクリプトステップに以下のように記載します。
URLから挿入 ターゲット:$$logout URLを指定:”https://[YOUR_ADDRESS]:443/fmi/admin/api/v2/user/auth/" & $$token cURLオプション:"curl -X DELETE” |

messagesのtextが「OK」になっていれば、正常にログアウト完了しています。

今回はAdminAPIの認証と、サーバー時刻の取得方法を紹介させていただきました。
APIドキュメントを閲覧いただくと、他にもさまざまな操作があることがわかりますので、
ぜひ他の操作にも活用ください。
次回はDataAPIを用いて、データベースの操作を行う方法をご紹介する予定です。











