FileMaker アドオン 「カレンダー」を修正する
Claris FileMaker のアドオンは、自分自身のカスタム App に簡単に高機能を実装できる仕組みだと思っております。
デフォルトでは JavaScript タイプのアドオンが 9 個、テーブルタイプのアドオンが 11 個が登録されている。それ以外にも日本・海外の Claris MarketPlace に様々なアドオンが登録されています。これからも Claris Partner 様が色々な機能を持ったアドオンを追加していただけると、現場の FileMaker 開発者は嬉しく感じると思っております。
今回はそのうちカレンダーのアドオンのスクリプトを少しだけ修正していこうと思います。
事の発端は
とあるツイートがきっかけです。
確かに長期の期間設定がされているレコードなど、カレンダーに表示されないケースがありました。
JavaScript タイプのアドオンは FileMaker Data API スクリプトステップを利用してレコードのデータを取得していいて、この FileMaker Data API スクリプトステップの箇所で、リクエストが長期の期間設定がされているレコードなどが表示されない書き方がされているためだとわかりました。
上の画像のように、2023年4月のデータを表示するのに、次のようなデータをクエリとしてスクリプトに渡しているのがわかります。
2023+03+24 <= 開始日 かつ 終了日 < 2023+05+09
これだと開始日が2023年03月24日 より前だったり、終了日が2023年05月09日より後だったりする場合、レコードがヒットしないということになります。
これを次のように修正すれば良いはずです。
2023+03+24 <= 終了日 かつ 開始日 < 2023+05+09
実装してみる
FCCalendarFind スクリプト内に [ 変数を設定 ] スクリプトステップを新たに追加して、 $data を修正します。
Let ( [
keys = JSONListKeys ( $data ; "query[0]" ) ;
key1 = GetValue ( keys ; 1 ) ;
key2 = GetValue ( keys ; 2 )
] ;
JSONSetElement (
$data ; [
"query[0]." & key1 ;
JSONGetElement ( $data ; "query[0]." & key2 ) ;
JSONString
] ; [
"query[0]." & key2 ;
JSONGetElement ( $data ; "query[0]." & key1 ) ;
JSONString
]
)
)
こうすることによって、長期のスケジュールも表示されるようになります。
お試しあれ。
2023年05月12日修正
「開始日や終了日のフィールド名を変更していると動かないよ」と taka さんより連絡を受けて、最後の実装の箇所を修正いたしました。taka さんありがとうございます!
この記事が気に入ったらサポートをしてみませんか?