FileMaker スクリプト引数にJSON 関数 使ってみた

「それ、基本JSON でね〜」(会社の先輩)

ん!!!😳

どうゆうこと?ってなりました。
そういえばテキスト中級編でもJSONSetElementって出てきてたよな。。。😶

あれ?どんなのだっけー。ということで

今回は、引数に複数の値を使用する場合に使うJSON関数をおさらいします。

以前のJSON 関数についての記事はこちら〜
👉FileMaker 「関数と計算式」 中級編(10章) 
   FileMaker 「スクリプトの自動化」 中級編(11章)後半

JSON関数

JSON 関数は、JSON 形式のデータを解析、作成、変更、および書式設定します。

Claris FileMaker Pro 19 ヘルプ

JSON形式では key : value の形でデータを管理します。
異なるプログラミング言語でも共通してデータをやりとりできるデータ形式です。

 名前 : 山田太郎 おやつ : ドーナツ レイアウト画面 : スタッフ一覧

今回の問題

今回、私は
「スタッフ一覧画面」で選択したスタッフIDを
⇨「申請フォーム画面」の申請スタッフIDのフィールドに挿入したい!!!
という機能をスクリプトで実行しようと考えていました。

修正前と修正後の実例を元に説明します。

修正前

●スタッフ選択スクリプト
※スクリプト内容についておかしなところがあると思います。ご了承ください。。。

変数を設定 [ $設定するフィールド ; 値 :GetValue ( Get(スクリプト引数) ; 1 )]
//GetValueで値一覧の1行目の値を取得

変数を設定 [ $設定する値 ; 値 :GetValue ( Get(スクリプト引数) ; 2 )]
//GetValueで値一覧の2行目の値を取得

ウインドウを閉じる [ 現在のウインドウ ]

ウインドウを選択 [ $設定位するフィールド ; $設定する値 ]

レコード/検索条件確定 [ダイアログあり:オン]

●ボタン設定のオプションのスクリプト引数

GetFieldName ( 経費申請__J経費申請::_MスタッフID ) & ¶ 

& _Mスタッフ管理::__ID

スクリプト引数が2つあるので改行区切りで設定しています。
1行目 GetFieldName ( 経費申請__J経費申請::_MスタッフID )
2行目 _Mスタッフ管理::__ID

修正後

●スタッフ選択スクリプト

//JSON関数を使用
変数を設定 [ $設定するフィールド ; 値 :JSONGetElement ( Get(スクリプト引数) ; "設定するフィールド" )]

変数を設定 [ $設定する値 ; 値 :JSONGetElement ( Get(スクリプト引数) ; "設定する値" )]

ウインドウを閉じる [ 現在のウインドウ ]

ウインドウを選択 [ $設定位するフィールド ; $設定する値 ]

レコード/検索条件確定 [ダイアログあり:オン]

変数の設定のみ変わりました。

『JSONGetElement ( json ; キーまたは索引またはパス )』を使用します。
JSON形式の値を取得して変数に代入します。


・スクリプト引数に入っているJSON形式の中で”設定するフィールド”というキーとセットになっている値を取得します。

●ボタン設定のオプションのスクリプト引数

JSONSetElement ( "{}" ;
	[ "設定するフィールド" ; GetFieldName ( 経費申請__J経費申請::_MスタッフID ) ; 1] ;
	[ "設定する値" ; _Mスタッフ管理::__ID ; 1 ]
 )

『JSONSetElement ( json ;
[キーまたは索引またはパス ; 値 ; タイプ];
[キーまたは索引またはパス ; 値 ; タイプ])』
で JSON データ内の要素を追加または変更します。

・jsonが “{}”なのは、jsonが空という意味です。

・データは以下のような形式で保持されます。
{“設定するフィールド” ; GetFieldName ( 経費申請__J経費申請::_MスタッフID ) , “設定する値” ; _Mスタッフ管理::__ID}
{キーバリュー , キーバリュー}となっています。

・タイプはjsonタイプで0〜6まであります。データのタイプを選択します。
 ・JSONString (1)FileMaker テキスト
 ・JSONNumber (2)FileMaker 数字
 ・JSONObject (3)JSON オブジェクト
 ・JSONArray (4)JSON 配列
 ・JSONBoolean (5)FileMaker 値または JSON 論理値
 ・JSONNull (6)タイプは無視
 ・JSONRaw (0) JSON 要素

以上でJSON関数への書き換えは完了です👍

まとめ

はじめは抵抗がありますが仕組みを覚えてしまえば簡単だそうです。
引数が複数になり複雑化する場合はとても便利なようです。

key:valueのセットなのでデータとしては整理された分かりやすい形式で扱われます。
引数にはJSON関数を使うことを習慣化していくと良いでしょう😊

コメント

タイトルとURLをコピーしました