クリック画像の実寸表示

段ボール箱を机にした猫 ファイルメーカー(filemaker)のちらしの裏のメモ書き

TOP  >  「FileMaker Data API を実行」の使い方(おまけ)
作成日:2024年10月21日

「FileMaker Data API を実行」の使い方(おまけ)

イメージイラスト
にゃん太

どうも、にゃん太です

「FileMaker Data API を実行」の使い方について、最初にclarisのサイトに記載してある設定可能なキーを記載しました

しかし、実際にはここに記載されていないキーも使用できます

実際に使ってみて困るシーンやその対処についても書いていく事にします


取得した日付の書式が違う!

問題発生を示すイメージ
「FileMaker Data API を実行」でデータを呼び出す場合、日付形式のデータを取得する事も当然あるでしょう
試しに実行してみると、次のようなデータが取得できます

結果

{ "messages": [ { "code": "0", "message": "OK" } ], "response": { "data": [ { "fieldData" : { "主キー" : "970CCDEE-A6B9-469F-8BBB-27F1A07A8EB9", "名" : "有咲", "姓" : "熊本", "生年月日" : "06/13/2011" "生徒番号" : "240001" }, "modId" : "3", "portalData" : {}, "recordId" : "1126" }, ], "dataInfo" : { "database" : "20241007_dataapi", "foundCount" : 1, "layout" : "全校生徒名簿_一部表示", "returnedCount" : 1, "table" : "全校生徒名簿", "totalRecordCount" : 1076 } } }

日付が、「mm/dd/yyyy」の形式で取得されている事が分かります
使えない訳ではないのですが、ひと手間かける必要があり面倒です
こんな時は、取得形式を指定する事で対応可能です

スクリプト

# ################################################## # FileMaker Data API を使用したレコードの取得(日付書式指定) # ################################################## 変数を設定 [$param; 値: JSONSetElement ( $param; "action"; "read"; JsonString )] 変数を設定 [$param; 値: JSONSetElement ( $param; "version"; "vLatest"; JsonString )] 変数を設定 [$param; 値: JSONSetElement ( $param; "layouts"; "全校生徒名簿_一部表示"; JsonString )] # 条件の指定 変数を設定 [$query; 値: JSONSetElement ( $query; "[0].生徒番号"; "240001"; JsonString )] 変数を設定 [$param; 値: JSONSetElement ( $param; "query"; $query; JsonArray )] # 取得する日付の書式指定 変数を設定 [$param; 値: JSONSetElement ( $param; "dateformats"; 1; JsonNumber)] FileMaker Data API を実行 [選択; ターゲット: $result; $param] フィールド設定 [result::result; JSONFormatElements ( $param )]

上記の様に記述すると、下記の様に取得できます

結果

{ "messages": [ { "code": "0", "message": "OK" } ], "response": { "data": [ { "fieldData" : { "主キー" : "970CCDEE-A6B9-469F-8BBB-27F1A07A8EB9", "名" : "有咲", "姓" : "熊本", "生年月日" : "2011/06/13" "生徒番号" : "240001" }, "modId" : "3", "portalData" : {}, "recordId" : "1126" }, ], "dataInfo" : { "database" : "20241007_dataapi", "foundCount" : 1, "layout" : "全校生徒名簿_一部表示", "returnedCount" : 1, "table" : "全校生徒名簿", "totalRecordCount" : 1076 } } }

日付で検索できない!

問題発生を示すイメージ
例えば8月誕生日の方を検索する場合、通常の検索に則って記述すれば下記の様になります

スクリプト

# ################################################## # FileMaker Data API を使用したレコードの取得(日付書式指定) # ################################################## 変数を設定 [$param; 値: JSONSetElement ( $param; "action"; "read"; JsonString )] 変数を設定 [$param; 値: JSONSetElement ( $param; "version"; "vLatest"; JsonString )] 変数を設定 [$param; 値: JSONSetElement ( $param; "layouts"; "全校生徒名簿_一部表示"; JsonString )] # 条件の指定 変数を設定 [$query; 値: JSONSetElement ( $query; "[0].生年月日"; "*/8/*"; JsonString )] 変数を設定 [$param; 値: JSONSetElement ( $param; "query"; $query; JsonArray )] # 取得する日付の書式指定 変数を設定 [$param; 値: JSONSetElement ( $param; "dateformats"; 1; JsonNumber)] FileMaker Data API を実行 [選択; ターゲット: $result; $param] フィールド設定 [result::result; JSONFormatElements ( $param )]

その結果は、8日が誕生日の方が取得できます
これは条件指定も「mm/dd/yyyy」となるためで、残念ながら検索条件の方は「dateformats」の指定では回避できませんし、Date関数で指定しても上手くいきません
面倒ですが、自分で形式変換してやるしかありません
尚、先程の8月誕生日を検索するのは下記の記述の仕方となります

変数を設定 [$query; 値: JSONSetElement ( $query; "[0].生年月日"; "8/*/*"; JsonString )]

NOT検索したい!

問題発生を示すイメージ
条件に一致しない、という検索をする事はよくあります
ファイルメーカーでは、「一致するレコードを除外」という指定ですね
これは、「omit」というキーを指定する事で実現できます

スクリプト

# ################################################## # FileMaker Data API を使用したレコードの取得(NOT検索) # ################################################## 変数を設定 [$param; 値: JSONSetElement ( $param; "action"; "read"; JsonString )] 変数を設定 [$param; 値: JSONSetElement ( $param; "version"; "vLatest"; JsonString )] 変数を設定 [$param; 値: JSONSetElement ( $param; "layouts"; "全校生徒名簿_一部表示"; JsonString )] # 条件の指定 変数を設定 [$query; 値: JSONSetElement ( $query; "[0].生徒番号"; "240001"; JsonString )] # 対象外の指定 変数を設定 [$query; 値: JSONSetElement ( $query; "[0].omit"; "ture"; JSONString )] 変数を設定 [$param; 値: JSONSetElement ( $param; "query"; $query; JsonArray )] FileMaker Data API を実行 [選択; ターゲット: $result; $param] フィールド設定 [result::result; JSONFormatElements ( $param )]

これにより、生徒番号が240001のデータ以外を検索する事ができます

メモ書き終了の案内イラスト

以上で今日のメモ書きは終了です

内容はいかがでしたか?

もしご意見やご要望、誤りの指摘などありましたら、下記フォームよりお気軽にご連絡ください

ご連絡フォーム