作成日:2024年10月28日
FileMaker Data API を使ってPHPからFileMakerを操作する(1)


どうも、にゃん太です
前回まで「FileMaker Data APIを実行する」について書いてきましたので、今回のメモでは「FileMaker Data API」でPHPからFileMakerファイルへアクセスする方法について書いていきます
「FileMaker Data API」を使用する大まかな流れ
技術的な事はClaris社のWEBサイトを見て頂くとして、基本的な流れとしては下記の通りです
- FileMakerファイルにアクセスし、TOKENを発行する
- TOKENを使用し、必要な処理を実行
- TOKENを終了する
本当に大まかではありますが、この順番で操作方法を見ていきます
TOKENの発行
まず始めに行うのがTOKENの発行です
権限を持たない人が勝手にファイルアクセスしては困りますので、権限を持っている事を示す作業となります
必要な情報は、ファイルが存在するサーバーのURL、ファイル名、ファイルへアクセスする為のアカウント名とパスワードとなります
PHP
function FMS_TOKEN($domain, $filename, $account){ $URL = $domain."/fmi/data/vLatest/databases/".$filename."/sessions"; $headers = array( 'Authorization: Basic '.$account, 'cache-control: no-cache', 'Content-Type: application/json', ); $context = array( 'http'=>array( 'method'=>'POST', 'header'=>implode("\r\n",$headers) ) ); $json = file_get_contents($URL, false, stream_context_create($context)); $token = $obj->response->token; return $token; }
引数を3つ使用していますので、軽く説明します
- $domain
-
サーバーのURLです
説明するまでも無いと思いますが、例えば「https://fm-memo.nyanta.jp」の様な内容です
- $filename
-
FileMakerファイルの名前です
「test.fmp12」というファイルへアクセスするのであれば、「test」で問題ありません
日本語名でも大丈夫ですが、URLエンコードする必要があります
- $account
-
FileMakerファイルへアクセス可能なアカウント名とパスワードをBase64エンコードした文字列となります
例えば、アカウント名が「admin」、パスワードが「123」だとした場合、コロンで連結した文字列「admin:123」を作成し、それをBase64エンコードします
この例であれば「YWRtaW46MTIz」という文字列になりますので、これを使用します
FileMaker Data APIで実行できる事
TOKENを取得したら、いよいよ実際の処理に入りますが、その前に何が出来るのかを見てみましょう
-
メタデータの取得
- 製品情報の取得
- データベース名の取得
- スクリプト名の取得
- レイアウト名の取得
- レイアウトメタデータの取得
-
レコードの操作
- レコードの取得
- レコードの作成
- レコードの編集
- レコードの複製
- レコードの削除
- レコードの検索
- グローバルフィールドの値を設定
- FileMakerスクリプトの実行
- オブジェクトデータのアップロード
といった処理が可能となっています
製品情報の取得
あまり使用する事もないと思いますが、製品情報を取得できます
これは、先程のTOKENを使用する必要もなく、URLだけで取得可能な情報となっています
PHP
function FMS_INFO($domain){ $URL = $domain."/fmi/data/vLatest/productInfo"; $json = file_get_contents($URL); return $json; }
取得結果
データベース名の取得
サーバー上のデータベース名を取得する事ができます
これもTOKENを使用する必要もなく、URLだけで取得可能な情報となっています
PHP
function FMS_databaseList($domain){ $URL = $domain."/fmi/data/vLatest/databases"; $json = file_get_contents($URL); return $json; }
取得結果
尚、取得可能なのはデータベース自体のFileMaker Data APIが有効になっているファイルだけです
また、フィルタが有効になっている場合はAuthorizationヘッダでアカウント名とパスワードを付帯する必要があります
スクリプト名の取得
FileMakerファイル内の利用可能なスクリプト名を取得する事ができます
取得したTOKENを利用する必要があります
PHP
function FMS_scriptList($domain, $filename, $token){ $URL = $domain."/fmi/data/vLatest/databases/".$filename."/scripts"; $headers = array( 'Authorization: Bearer '.$token, 'cache-control: no-cache', 'Content-Type: application/json', ); $context = array( 'http'=>array( 'method'=>'GET', 'header'=>implode("\r\n",$headers) ) ); $json = file_get_contents($URL, false, stream_context_create($context)); return $json; }
取得結果
上記の通り、フォルダの状況も含めてスクリプト名一覧が取得できます
レイアウト名の取得
FileMakerファイル内のレイアウト名を取得する事ができます
取得したTOKENを利用する必要があります
PHP
function FMS_layoutList($domain, $filename, $token){ $URL = $domain."/fmi/data/vLatest/databases/".$filename."/layouts"; $headers = array( 'Authorization: Bearer '.$token, 'cache-control: no-cache', 'Content-Type: application/json', ); $context = array( 'http'=>array( 'method'=>'GET', 'header'=>implode("\r\n",$headers) ) ); $json = file_get_contents($URL, false, stream_context_create($context)); return $json; }
取得結果
上記の通り、フォルダの状況も含めてレイアウト名一覧が取得できます
レイアウトメタデータの取得
指定したレイアウトに配置されたフィールド、ポータル情報を取得する事ができます
PHP
function FMS_layoutMetaData($domain, $filename, $layout, $token){ $URL = $domain."/fmi/data/vLatest/databases/".$filename."/layouts/".$layout; $headers = array( 'Authorization: Bearer '.$token, 'cache-control: no-cache', 'Content-Type: application/json', ); $context = array( 'http'=>array( 'method'=>'GET', 'header'=>implode("\r\n",$headers) ) ); $json = file_get_contents($URL, false, stream_context_create($context)); return $json; }
取得結果
上記の様にデータを取得する事ができます
尚、新しい引数がありますので、一応説明します
- $layout
-
対象とするレイアウト名を指定します
日本語名でも大丈夫ですが、URLエンコードする必要があります
長くなったので、今回はここまでとします
FileMaker Data API を使ってPHPからFileMakerを操作する(2)へ続きます

以上で今日のメモ書きは終了です
内容はいかがでしたか?
もしご意見やご要望、誤りの指摘などありましたら、下記フォームよりお気軽にご連絡ください