「FileMaker Data API を実行」の使い方(1)


どうも、にゃん太です
「FileMaker Data API を実行」というスクリプトステップがあります
これまで何となく使ってこなかったのですが、2024で新しい機能が追加されたので、せっかくの機会と思って使い方を調べてみました
今回のメモでは、「FileMaker Data API を実行」について書いていきます
- action
-
行う処理の内容を指定します
- read : データを取得
- metaData : テーブル、レイアウトの構造を取得
- create : レコードの作成
- update : レコードの更新
- delete : レコードの削除
- duplicate : レコードの複製
このキーを指定しなかった場合、「read」が割り当てられます
- version
-
実行するバージョンを指定します
- v1
- v2
- vLatest
このキーを指定しなかった場合、「v1」が割り当てられます
- layouts
-
処理を行うレイアウト名を指定します
「action」で「metaData」を指定した時以外は必須条件となります
- tables
-
「action」で「metaData」を指定した時に指定するキーとなります
構造を取得したテーブルオカレンス名を指定します(テーブル名でない事に注意!)
- query
-
処理対象となるレコードを指定する条件です
フィールド名と値をセットで指定します
query、recordIdは両方指定する事はできません
- recordId
-
レコードを固有のID番号で指定します
query、recordIdは両方指定する事はできません
- sort
-
レコードのソートを指定する事ができます
「fieldName」で対象フィールドを、「sortOrder」で昇順/降順を指定します
- offset
-
「read」で複数データを取得する場合に、途中のデータから取得する場合に何番めかを指定します
このキーを指定しなかった場合、「1」が割り当てられます
- limit
-
「read」で複数データを取得する場合に、何件分のデータを取得するかを指定します
実件数の方が少ない場合は全件取得します
このキーを指定しなかった場合、「100」が割り当てられます
- layout.response
-
異なるレイアウトのコンテキストでデータを取得する場合にレイアウト名を指定します
このキーを指定しなかった場合、「layouts」と同じ値が割り当てられます
- portal
-
データを取得するポータルを指定します
指定しない場合は全てのポータルデータが取得されます
- offset.portal-name
-
関連レコードの取得開始番号を指定します
「portal-name」にポータルのオブジェクト名、もしくは関連テーブル名を指定します
このキーを指定しなかった場合、「1」が割り当てられます
- limit.portal-name
-
関連レコード取得時の取得件数を指定します
「portal-name」にポータルのオブジェクト名、もしくは関連テーブル名を指定します
このキーを指定しなかった場合、「50」が割り当てられます
- fieldData
-
「create」「update」する場合のデータ内容を指定します
フィールド名と値を指定したJSON形式で指定します
- portalData
-
「create」「update」する場合のデータ内容を指定します
フィールド名と値をセットで指定します
- modId
-
「update」の場合に、対象の「modId」を指定する事ができます
一致しない場合、レコードは変更されません
- options.entrymode
-
「create」「update」でデータを書き込む場合に、入力値の制限を逸脱した入力を許可するかを指定する事ができます
- script : 入力値の制限を無視する
- user : 入力値の制限に逸脱する書込不可
このキーを指定しなかった場合、「user」が割り当てられます





スクリプト
# ################################################## # FileMaker Data API を使用したテーブル構造の取得 # ################################################## 変数を設定 [$param; 値: JSONSetElement ( $param; "action"; "metaData"; JsonString )] 変数を設定 [$param; 値: JSONSetElement ( $param; "version"; "vLatest"; JsonString )] 変数を設定 [$param; 値: JSONSetElement ( $param; "tables"; "全校生徒名簿"; JsonString )] FileMaker Data API を実行 [選択; ターゲット: $result; $param] フィールド設定 [result::result; JSONFormatElements ( $param )]
結果
{ "messages": [ { "code": "0", "message": "OK" } ], "response": { "baseTable": "全校生徒名簿", "fieldMetaData": [ { "autoEnter": false, "fourDigitYear": false, "global": false, "maxCharacters"; 0, "maxRepeat": 1, "name": "姓", "notEmpty": false, "numeric": false, "repetitionEnd": 1, "repetitionStart": 1, "result": "text", "timeOfDay": false, "type": "normal" }, { "autoEnter": false, "fourDigitYear": false, "global": false, "maxCharacters"; 0, "maxRepeat": 1, "name": "姓", "notEmpty": false, "numeric": false, "repetitionEnd": 1, "repetitionStart": 1, "result": "text", "timeOfDay": false, "type": "normal" } ], "portalMetaData": {} } }
スクリプト
# ################################################## # FileMaker Data API を使用したレコードの取得 # ################################################## 変数を設定 [$param; 値: JSONSetElement ( $param; "action"; "read"; JsonString )] 変数を設定 [$param; 値: JSONSetElement ( $param; "version"; "vLatest"; JsonString )] 変数を設定 [$param; 値: JSONSetElement ( $param; "layouts"; "全校生徒名簿_一部表示"; JsonString )] FileMaker Data API を実行 [選択; ターゲット: $result; $param] フィールド設定 [result::result; JSONFormatElements ( $param )]
結果
{ "messages": [ { "code": "0", "message": "OK" } ], "response": { "data": [ { "fieldData" : { "主キー" : "970CCDEE-A6B9-469F-8BBB-27F1A07A8EB9", "名" : "有咲", "名フリガナ" : "アリサ", "姓" : "熊本", "姓フリガナ" : "クマモト", "生徒番号" : "240001" }, "modId" : "3", "portalData" : {}, "recordId" : "1126" }, { "fieldData" : { "主キー" : "DEABAF3E-8A3B-411D-8AC0-582C6D38D01A", "名" : "悠河", "名フリガナ" : "ユウガ", "姓" : "宮尾", "姓フリガナ" : "ミヤオ", "生徒番号" : "240002" }, "modId" : "3", "portalData" : {}, "recordId" : "1127" }, ~ 中略 ~ { "fieldData" : { "主キー" : "74F2747E-11AF-47B9-B524-77431FCBB2FE", "名" : "蒼", "名フリガナ" : "ソウ", "姓" : "古家", "姓フリガナ" : "フルヤ", "生徒番号" : "240100" }, "modId" : "3", "portalData" : {}, "recordId" : "1225" } ], "dataInfo" : { "database" : "20241007_dataapi", "foundCount" : 1076, "layout" : "全校生徒名簿_一部表示", "returnedCount" : 100, "table" : "全校生徒名簿", "totalRecordCount" : 1076 } } }
スクリプト
# ################################################## # FileMaker Data API を使用したレコードの取得(条件指定) # ################################################## 変数を設定 [$param; 値: JSONSetElement ( $param; "action"; "read"; JsonString )] 変数を設定 [$param; 値: JSONSetElement ( $param; "version"; "vLatest"; JsonString )] 変数を設定 [$param; 値: JSONSetElement ( $param; "layouts"; "全校生徒名簿"; JsonString )] # 条件の指定 変数を設定 [$query; 値: JSONSetElement ( $query; "[0].姓"; "小林"; JsonString )] 変数を設定 [$param; 値: JSONSetElement ( $param; "query"; $query; JsonArray )] FileMaker Data API を実行 [選択; ターゲット: $result; $param] フィールド設定 [result::result; JSONFormatElements ( $param )]
スクリプト
# ################################################## # FileMaker Data API を使用したレコードの取得(条件指定) # ################################################## 変数を設定 [$param; 値: JSONSetElement ( $param; "action"; "read"; JsonString )] 変数を設定 [$param; 値: JSONSetElement ( $param; "version"; "vLatest"; JsonString )] 変数を設定 [$param; 値: JSONSetElement ( $param; "layouts"; "全校生徒名簿_一部表示"; JsonString )] # 条件の指定 変数を設定 [$query; 値: JSONSetElement ( $query; "[0].姓"; "小林"; JsonString )] 変数を設定 [$query; 値: JSONSetElement ( $query; "[1].姓"; "杉"; JsonString )] 変数を設定 [$param; 値: JSONSetElement ( $param; "query"; $query; JsonArray )] FileMaker Data API を実行 [選択; ターゲット: $result; $param] フィールド設定 [result::result; JSONFormatElements ( $param )]
結果
{ "messages" : [ { "code" : "0", "message" : "OK" } ], "response" : { "data" : [ { "fieldData" : { "姓" : "小林", "生徒番号" : "240007" }, "modId" : "4", "portalData" : {}, "recordId" : "1132" }, { "fieldData" : { "姓" : "杉山", "生徒番号" : "240016" }, "modId" : "3", "portalData" : {}, "recordId" : "1141" }, { "fieldData" : { "姓" : "若杉", "生徒番号" : "240092" }, "modId" : "4", "portalData" : {}, "recordId" : "1217" }, { "fieldData" : { "姓" : "若杉", "生徒番号" : "240196" }, "modId" : "4", "portalData" : {}, "recordId" : "1321" }, { "fieldData" : { "姓" : "杉森", "生徒番号" : "240201" }, "modId" : "3", "portalData" : {}, "recordId" : "1326" }, { "fieldData" : { "姓" : "杉野", "生徒番号" : "240211" }, "modId" : "3", "portalData" : {}, "recordId" : "1336" }, { "fieldData" : { "姓" : "杉崎", "生徒番号" : "240259" }, "modId" : "3", "portalData" : {}, "recordId" : "1384" }, { "fieldData" : { "姓" : "杉野", "生徒番号" : "240275" }, "modId" : "3", "portalData" : {}, "recordId" : "1400" }, { "fieldData" : { "姓" : "小杉", "生徒番号" : "230013" }, "modId" : "3", "portalData" : {}, "recordId" : "1513" }, { "fieldData" : { "姓" : "高杉", "生徒番号" : "230033" }, "modId" : "2", "portalData" : {}, "recordId" : "1533" }, { "fieldData" : { "姓" : "小林", "生徒番号" : "230102" }, "modId" : "2", "portalData" : {}, "recordId" : "1602" }, { "fieldData" : { "姓" : "杉山", "生徒番号" : "230112" }, "modId" : "3", "portalData" : {}, "recordId" : "1612" }, { "fieldData" : { "姓" : "杉浦", "生徒番号" : "230183" }, "modId" : "2", "portalData" : {}, "recordId" : "1683" }, { "fieldData" : { "姓" : "杉原", "生徒番号" : "230191" }, "modId" : "3", "portalData" : {}, "recordId" : "1691" }, { "fieldData" : { "姓" : "杉", "生徒番号" : "230206" }, "modId" : "3", "portalData" : {}, "recordId" : "1706" }, { "fieldData" : { "姓" : "杉森", "生徒番号" : "220022" }, "modId" : "2", "portalData" : {}, "recordId" : "1897" }, { "fieldData" : { "姓" : "杉江", "生徒番号" : "220062" }, "modId" : "2", "portalData" : {}, "recordId" : "1937" }, { "fieldData" : { "姓" : "杉森", "生徒番号" : "220124" }, "modId" : "3", "portalData" : {}, "recordId" : "1999" }, { "fieldData" : { "姓" : "杉崎", "生徒番号" : "220187" }, "modId" : "2", "portalData" : {}, "recordId" : "2062" }, { "fieldData" : { "姓" : "若杉", "生徒番号" : "220208" }, "modId" : "2", "portalData" : {}, "recordId" : "2083" }, { "fieldData" : { "姓" : "小杉", "生徒番号" : "220335" }, "modId" : "2", "portalData" : {}, "recordId" : "2210" } ], "dataInfo" : { "database" : "20241007_dataapi", "foundCount" : 21, "layout" : "全校生徒名簿_一部表示", "returnedCount" : 21, "table" : "全校生徒名簿", "totalRecordCount" : 1077 } } }
スクリプト
# ################################################## # FileMaker Data API を使用したレコードの取得(ソート付き) # ################################################## 変数を設定 [$param; 値: JSONSetElement ( $param; "action"; "read"; JsonString )] 変数を設定 [$param; 値: JSONSetElement ( $param; "version"; "vLatest"; JsonString )] 変数を設定 [$param; 値: JSONSetElement ( $param; "layouts"; "全校生徒名簿_一部表示"; JsonString )] # 条件の指定 変数を設定 [$query; 値: JSONSetElement ( $query; "[0].姓"; "小林"; JsonString )] 変数を設定 [$query; 値: JSONSetElement ( $query; "[1].姓"; "杉"; JsonString )] 変数を設定 [$param; 値: JSONSetElement ( $param; "query"; $query; JsonArray )] # ソート条件の指定 変数を設定 [$sort; 値: JSONSetElement ( $sort; "[0].fieldName"; "姓"; JsonString )] 変数を設定 [$sort; 値: JSONSetElement ( $sort; "[0].sortOrder"; "ascend"; JsonString )] 変数を設定 [$param; 値: JSONSetElement ( $param; "sort"; $sort; JsonArray )] FileMaker Data API を実行 [選択; ターゲット: $result; $param] フィールド設定 [result::result; JSONFormatElements ( $param )]
結果
{ "messages": [ { "code": "0", "message": "OK" } ], "response": { "data": [ { "fieldData" : { "姓" : "高杉", "生徒番号" : "230033" }, "modId" : "2", "portalData" : {}, "recordId" : "1533" }, { "fieldData" : { "姓" : "若杉", "生徒番号" : "240092" }, "modId" : "4", "portalData" : {}, "recordId" : "1217" }, { "fieldData" : { "姓" : "若杉", "生徒番号" : "240196" }, "modId" : "4", "portalData" : {}, "recordId" : "1321" }, { "fieldData" : { "姓" : "若杉", "生徒番号" : "220208" }, "modId" : "2", "portalData" : {}, "recordId" : "2083" }, { "fieldData" : { "姓" : "小杉", "生徒番号" : "230013" }, "modId" : "3", "portalData" : {}, "recordId" : "1513" }, { "fieldData" : { "姓" : "小杉", "生徒番号" : "220335" }, "modId" : "2", "portalData" : {}, "recordId" : "2210" }, { "fieldData" : { "姓" : "小林", "生徒番号" : "240007" }, "modId" : "4", "portalData" : {}, "recordId" : "1132" }, { "fieldData" : { "姓" : "小林", "生徒番号" : "230102" }, "modId" : "2", "portalData" : {}, "recordId" : "1602" }, { "fieldData" : { "姓" : "杉", "生徒番号" : "230206" }, "modId" : "3", "portalData" : {}, "recordId" : "1706" }, { "fieldData" : { "姓" : "杉浦", "生徒番号" : "230183" }, "modId" : "2", "portalData" : {}, "recordId" : "1683" }, { "fieldData" : { "姓" : "杉原", "生徒番号" : "230191" }, "modId" : "3", "portalData" : {}, "recordId" : "1691" }, { "fieldData" : { "姓" : "杉江", "生徒番号" : "220062" }, "modId" : "2", "portalData" : {}, "recordId" : "1937" }, { "fieldData" : { "姓" : "杉崎", "生徒番号" : "240259" }, "modId" : "3", "portalData" : {}, "recordId" : "1384" }, { "fieldData" : { "姓" : "杉崎", "生徒番号" : "220187" }, "modId" : "2", "portalData" : {}, "recordId" : "2062" }, { "fieldData" : { "姓" : "杉山", "生徒番号" : "240016" }, "modId" : "3", "portalData" : {}, "recordId" : "1141" }, { "fieldData" : { "姓" : "杉山", "生徒番号" : "230112" }, "modId" : "3", "portalData" : {}, "recordId" : "1612" }, { "fieldData" : { "姓" : "杉森", "生徒番号" : "240201" }, "modId" : "3", "portalData" : {}, "recordId" : "1326" }, { "fieldData" : { "姓" : "杉森", "生徒番号" : "220022" }, "modId" : "2", "portalData" : {}, "recordId" : "1897" }, { "fieldData" : { "姓" : "杉森", "生徒番号" : "220124" }, "modId" : "3", "portalData" : {}, "recordId" : "1999" }, { "fieldData" : { "姓" : "杉野", "生徒番号" : "240211" }, "modId" : "3", "portalData" : {}, "recordId" : "1336" }, { "fieldData" : { "姓" : "杉野", "生徒番号" : "240275" }, "modId" : "3", "portalData" : {}, "recordId" : "1400" } ], "dataInfo" : { "database" : "20241007_dataapi", "foundCount" : 21, "layout" : "全校生徒名簿_一部表示", "returnedCount" : 21, "table" : "全校生徒名簿", "totalRecordCount" : 1077 } } }


スクリプト
# ################################################## # FileMaker Data API を使用したレコードの取得(ポータル) # ################################################## 変数を設定 [$param; 値: JSONSetElement ( $param; "action"; "read"; JsonString )] 変数を設定 [$param; 値: JSONSetElement ( $param; "version"; "vLatest"; JsonString )] 変数を設定 [$param; 値: JSONSetElement ( $param; "layouts"; "生徒別成績"; JsonString )] 変数を設定 [$query; 値: JSONSetElement ( $query; "[0].姓"; "小林"; JsonString )] 変数を設定 [$param; 値: JSONSetElement ( $param; "query"; $query; JsonArray )] FileMaker Data API を実行 [選択; ターゲット: $result; $param] フィールド設定 [result::result; JSONFormatElements ( $param )]
結果
{ "messages": [ { "code": "0", "message": "OK" } ], "response": { "data": [ { "fieldData" : { "名" : "健悟", "姓" : "小林", "生徒番号" : "240007" }, "modId" : "4", "portalData" : { "成績" : [ { "modId" : "1", "recordId" : "15044", "試験成績::保健体育" : "", "試験成績::合計" : 198, "試験成績::国語" : 46, "試験成績::外国語" : 32, "試験成績::技術・家庭" : "", "試験成績::数学" : 40, "試験成績::理科" : 38, "試験成績::社会" : 42, "試験成績::美術" : "", "試験成績::試験名" : "1学期中間", "試験成績::音楽" : "", "試験成績::順位" : 292 }, { "modId" : "1", "recordId" : "15045", "試験成績::保健体育" : 32, "試験成績::合計" : 320, "試験成績::国語" : 30, "試験成績::外国語" : 35, "試験成績::技術・家庭" : 33, "試験成績::数学" : 37, "試験成績::理科" : 49, "試験成績::社会" : 44, "試験成績::美術" : 30, "試験成績::試験名" : "1学期期末", "試験成績::音楽" : 30, "試験成績::順位" : 315 }, { "modId" : "1", "recordId" : "15046", "試験成績::保健体育" : "", "試験成績::合計" : 164, "試験成績::国語" : 36, "試験成績::外国語" : 30, "試験成績::技術・家庭" : "", "試験成績::数学" : 36, "試験成績::理科" : 30, "試験成績::社会" : 32, "試験成績::美術" : "", "試験成績::試験名" : "2学期中間", "試験成績::音楽" : "", "試験成績::順位" : 332 }, { "modId" : "1", "recordId" : "15047", "試験成績::保健体育" : 38, "試験成績::合計" : 358, "試験成績::国語" : 40, "試験成績::外国語" : 34, "試験成績::技術・家庭" : 43, "試験成績::数学" : 38, "試験成績::理科" : 40, "試験成績::社会" : 47, "試験成績::美術" : 42, "試験成績::試験名" : "2学期期末", "試験成績::音楽" : 36, "試験成績::順位" : 287 } ] }, "portalDataInfo" : [ { "database" : "20241007_dataapi", "foundCount" : 6, "portalObjectName" : "成績", "returnedCount" : 4, "table" : "試験成績" } ], "recordId" : "1132" }, { "fieldData" : { "名" : "莉杏", "姓" : "小林", "生徒番号" : "230102" }, "modId" : "2", "portalData" : { "成績" : [ { "modId" : "1", "recordId" : "17762", "試験成績::保健体育" : "", "試験成績::合計" : 269, "試験成績::国語" : 54, "試験成績::外国語" : 61, "試験成績::技術・家庭" : "", "試験成績::数学" : 54, "試験成績::理科" : 47, "試験成績::社会" : 53, "試験成績::美術" : "", "試験成績::試験名" : "1学期中間", "試験成績::音楽" : "", "試験成績::順位" : 216 }, { "modId" : "1", "recordId" : "17763", "試験成績::保健体育" : 48, "試験成績::合計" : 487, "試験成績::国語" : 55, "試験成績::外国語" : 56, "試験成績::技術・家庭" : 50, "試験成績::数学" : 62, "試験成績::理科" : 56, "試験成績::社会" : 48, "試験成績::美術" : 63, "試験成績::試験名" : "1学期期末", "試験成績::音楽" : 49, "試験成績::順位" : 214 }, { "modId" : "1", "recordId" : "17764", "試験成績::保健体育" : "", "試験成績::合計" : 276, "試験成績::国語" : 51, "試験成績::外国語" : 57, "試験成績::技術・家庭" : "", "試験成績::数学" : 53, "試験成績::理科" : 61, "試験成績::社会" : 54, "試験成績::美術" : "", "試験成績::試験名" : "2学期中間", "試験成績::音楽" : "", "試験成績::順位" : 211 }, { "modId" : "1", "recordId" : "17765", "試験成績::保健体育" : 55, "試験成績::合計" : 524, "試験成績::国語" : 54, "試験成績::外国語" : 51, "試験成績::技術・家庭" : 58, "試験成績::数学" : 63, "試験成績::理科" : 64, "試験成績::社会" : 63, "試験成績::美術" : 57, "試験成績::試験名" : "2学期期末", "試験成績::音楽" : 59, "試験成績::順位" : 192 } ] }, "portalDataInfo" : [ { "database" : "20241007_dataapi", "foundCount" : 6, "portalObjectName" : "成績", "returnedCount" : 4, "table" : "試験成績" } ], "recordId" : "1602" } ], "dataInfo" : { "database" : "20241007_dataapi", "foundCount" : 2, "layout" : "生徒別成績", "returnedCount" : 2, "table" : "全校生徒名簿", "totalRecordCount" : 1076 } } }

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