カンファレンスでお話したXMLをパースする関数のカスタム関数化について

本日カンファレンス
「Web API連携の基礎を解説!FileMaker Goソリューションを機能拡張しよう」
で紹介したXMLをパースする関数のカスタム関数化についての続報です。

カスタム関数化するにあたり、もっと汎用性を効かせるためには回数のパラメータも追加しました。
紹介済)
Let ( [ X = テキスト
; 開始タグ = “<Feature>”
; 終了タグ = “</Feature>”
; 開始位置 = Position ( X ; 開始タグ ; 1 ; 1 )
+ Length ( 開始タグ )
; 終了位置 = Position ( X ; 終了タグ ; 1 ; 1 )
]; Middle ( X ; 開始位置 ; 終了位置 – 開始位置 ) )

改定後)
Let ( [ X = テキスト
; 開始タグ = “<Feature>”
; 終了タグ = “</Feature>”
; 回数 = 1
; 開始位置 = Position ( X ; 開始タグ ; 1 ; 回数 )
+ Length ( 開始タグ )
; 終了位置 = Position ( X ; 終了タグ ; 1 ; 回数 )
]; Middle ( X ; 開始位置 ; 終了位置 – 開始位置 ) )

セッションでは1一つの郵便番号に対する一つの住所レスポンスだったのでよかったのですが、別のAPIでは一つのレスポンスの中に複数の答えがある場合もありますので、回数を引数で渡せれば、一つ目、二つ目と順に取得できるので使いやすくなります。

ちなみにFileMaker Pro Advancedでないとカスタム関数の作成はできません。利用は全端末で可能です。

本ブログは画像やサンプルファイルを置かない社内ルールなので、
カスタム関数作成を言葉だけで解説するのは大変ですが下記起き付き合いください。
カスタム関数の作成では、「関数名」「関数の引数」「()=」の入力が必要です。
「関数名」はお好きな文字を入れます。
「関数の引数」は今回は「テキスト」「開始タグ」「終了タグ」「回数」が必要です。
「()=」には上記引数を含んだ式になりますので、

Let ( [ X = テキスト
; 開始位置 = Position ( X ; 開始タグ ; 1 ; 回数 )
+ Length ( 開始タグ )
; 終了位置 = Position ( X ; 終了タグ ; 1 ; 回数 )
]; Middle ( X ; 開始位置 ; 終了位置 – 開始位置 ) )

という式になります。
見ていただいたとおり上記の改定後)からLet内変数宣言を省略しただけです。
なので、Let関数で書いておくとカスタム関数化しやすいというセッションでお話したとおりです。

実際の弊社で利用している関数では、さらに開始回数、終了回数のパラメータ化、そして指定した各タグが存在しなかった時の条件式も加えてたりします。