はじめに

2つの日付フィールドの値を比較し、その結果によってセットする値を変更したい、というケースはよくありますよね。

しかし、使用できる演算子一覧にもあるように「>」「<」などの演算子を使用する場合は、値は数値である必要があるため、そのままでは日付を比較できません。

そのため、少し工夫が必要になります。


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

「使用期限」と「使用日」の日付を比較して、「有効・無効」フィールドに値をセットする。


if関数」を使用して日付を比較した結果によって、「有効」か「無効」かをセットしたいのですが、


=if(使用期限< 使用日, "無効", "有効")


のように日付を直接比較しようとすると、値が数値ではないため下記のエラーが発生してしまいます。


そのため「format 関数」を使用して、日付を数値に変換して比較します。


=if(format(使用期限, "X") < format(使用日, "X"), "無効", "有効")


format 関数」の第2引数には書式設定を入力します。この例で入力している「X」は日付をタイムスタンプに変換する書式です。

なお、書式指定は、kintone アプリカスタマイズでは moment.js の形式、Job Runner 版では Arrow の形式になります。


カスタマイズ例

「フィールドに値をセットする」で、「使用期限」と「使用日」を比較し、「無効」または「有効」をセットします。


ここで注意が必要なのが、日付フィールドが空の場合です。

どちらか一方、または両方のフィールドが空のまま比較を行うと、「数値が正しくありません。」というエラーが発生してしまいます。


そこで、両方の日付フィールドに値が入っている場合のみ処理が実行されるよう、

追加条件として「複数フィールドのうちどれか1つ以上が空ならば」を反転させた「複数フィールドの全てが空でないならば」を設定します。


これにより、値が空の日付フィールドがある場合はアクションが実行されず、

両方に値が入力されている時のみ、日付を比較して値をセットできるようになります。


以上で、2つの日付を比較して値をセットするカスタマイズが完成です!


関数を使わない設定

上記と同じ内容は「if関数」「format 関数」など関数を使わずに、設定することも可能です!


日付を比較するときは、追加条件「2つの日付を比較して条件を満たすならば」を使用します。

この方法では、「有効」の場合と「無効」の場合それぞれに対して、アクションを設定する必要があります。

運用に合わせて使いやすい方法をお試しください!


おわりに

日付を比較する際、「format 関数」を使用して数値に変換してから比較するというのが今回のポイントでしたね!

また、値が空の状態で処理を行うとエラーになる点も、見落としやすいポイントなので注意が必要です。


ドキュメントサポートページもぜひご活用ください。

ご不明点等ございましたら、チャットにてご質問ください!