はじめに

タイトルだけを見てもイメージしにくいと思います。簡単にいうと以下のように「日付1の値が重複している場合」に日付1の背景色を変更します。

表示されているレコード内で値が重複しているかを判定するので、絞り込み条件で表示するレコードが変わった場合は以下のように変化します。

並び順を変えても問題なしです。

 

今回のカスタマイズで出来ること

  • 一覧画面で表示しているレコード内でフィールド値が重複していたらフィールド背景色を変更します

  • 絞り込み条件を変更して表示レコードが変わるとその時点の条件で背景色が変更になります


アプリには以下のフィールドを作成しました

フィールド名

フィールドコード

フィールドタイプ

日付1

日付_1

日付


Customineの設定

設定はこのようになります。

解説

一覧画面を表示した時」に「一覧で画面に表示されているレコードを取得する」で対象となるレコードを取得します。

次の「フィールド背景色を変更する」のアクションを「他のアクションの実行が完了した時」で繋ぎます。この時の「追加条件」に「フィールド値が特定の値ならば」を設定する時の「比較値」がポイントです。


「比較値」には「findif 関数」を使って値を指定します。設定している式は次のような内容です。


= findif( $262.日付_1, "=",  日付_1, $262.日付_1) 


最初の一覧の場合だと、この値は以下のようになります

日付

2021-11-30

2021-11-30,2021-11-30

2021-11-30

2021-11-30,2021-11-30

2021-11-29

2021-11-29

2021-11-02

2021-11-02,2021-11-02

2021-11-02

2021-11-02,2021-11-02

 

findif 関数」では、配列の中から指定条件に一致するものを探します。ドキュメントの使用例を元にすると、最初のレコードの場合は以下のようになります。


= findif(

 ["2021-11-30", "2021-11-30", "2021-11-29", "2021-11-02", "2021-11-02"],

 "=",

 "2021-11-30",

 ["2021-11-30", "2021-11-30", "2021-11-29", "2021-11-02", "2021-11-02"]

 )

(結果)⇒ ["2021-11-30", "2021-11-30"]


同じ日付のレコードがあった場合は結果に同じ数だけ日付が追加されます。ですので、同じレコードがない時だけ日付と一致するということになります。

 

まとめ

findif 関数」は使い所が難しいのですが、用途に合うと非常に強力です。


その他にも色々な「関数」がありますので、リンク先もご確認ください。