○日後というのは、kintoneの計算フィールドやCustomineの「日付を計算する」で取得可能ですが、○営業日後というのは、曜日や会社の都合などで変わるため単純には取得出来ません。
今回は、営業日アプリというものを別途作成して、○営業日後の日付を取得するようにします。なお、「レコード中のフィールド最大値を計算する」を使うと日数を変更する場合の修正を行いやすいので、こちらを利用します。
今回のカスタマイズで出来ること
レコードを保存した時に、基準日から○営業日後の日付を指定のフィールドにセットする
基準日から10営業日後の日付のセット
○営業日後の日付の例として、10営業日後の日付をセットするカスタマイズを作成してみます。
アプリの準備
今回のカスタマイズでは営業日アプリと日報アプリ(カスタマイズ対象)の2つのアプリを使用します。
営業日アプリ
※フィールドコードはフィールド名と同じものを指定します
営業日アプリでは、次のように土曜日や日曜日などの非営業日を除いた営業日を1日1レコードとして作成しておきます。なお、今回は祝日も営業日と見なす例として、「2024年4月29日(昭和の日)」も営業日としてレコードを作成しています。
日報アプリ(カスタマイズを設定するアプリ)
※フィールドコードはフィールド名と同じものを指定してください
※フィールドコードは先頭に半角数字を設定できないので、全角数字を使用しています。
編集画面では次のようになります。
カスタマイズの全体像
全体の流れはこのようになります。
日報アプリにて、基準日を入力したレコードを保存した時に、条件を組み立てて営業日アプリのレコードを10件取得します
1で取得した10レコード中の日付フィールドの最大値(10営業日後の日付)を計算し、日報アプリの指定のフィールドにセットします
基準日よりも日付が後のレコードを10件取得
それでは、カスタマイズの詳細に入っていきます。
まず、営業日アプリのレコードを10件取得します。この時、営業日アプリの日付が日報アプリの基準日よりも後のレコードを取得します。
ここでは、やること「条件を組み立ててレコードを取得する」、「レコードを保存する直前(削除時は除く)」を使用します。
その際、「やること」の「最大取得件数」には「10」と入力してください。
検索条件には次の画像のように条件を指定します。
上記の「検索条件」と「最大取得件数」により「営業日アプリ」から「日報アプリ」の「基準日」以降の日付を持つレコードを10件取得できます。
基準日から10営業日後の日付のセット
次に、取得した10件のレコード中で、一番後(最大)の日付を計算し、その結果を指定のフィールドにセットします。
ここでは、やること「レコード中のフィールド最大値を計算する」、条件「他のアクションの実行が完了した時」を用います。
実行結果のイメージ
日報アプリにて、基準日に「2024-04-01」を入れてレコードを保存すると、次のようになります。
これで、基準日「2024-04-01」から、営業日アプリに登録されている非営業日を除いた10営業日後の「2024-04-12」が「10営業日後」フィールドにセットされていることが確認できます。
複数の○営業日後の日付をセット
先ほどのやり方だと、10営業日後と20営業日後のように、○営業日後をセットするフィールドが複数ある場合、レコード取得のアクションが多くなり、時間がかかることが考えられます。
その場合、後になる○営業日後の日付を持つレコードを取得し、その間の○営業日後の日付は日数の直接指定で取得することが可能です。
例えば、20営業日後と10営業日後の日付を取得する場合に、20営業日後までのレコードを取得すれば、10営業日後の日付は、そのレコード取得のアクションの結果を利用して、10営業日後の日付を取得する日数の直接指定により取得できます。
それでは、試してみましょう。
アプリの準備
上記の「基準日から10営業日後の日付のセット」で使用した2つのアプリを使用します。
営業日アプリはそのまま使用し、日報アプリには日付フィールドを1つ追加します。
日報アプリ
※フィールドコードはフィールド名と同じものを指定してください
※フィールドコードは先頭に半角数字を設定できないので、全角数字を使用しています。
編集画面では次のようになります。
カスタマイズの全体像
全体の流れはこのようになります。
日報アプリにて、基準日を入力したレコードを保存した時に、条件を組み立てて営業日アプリのレコードを20件取得します
1で取得したレコード中の日付フィールドの最大値(20営業日後の日付)を計算し、日報アプリの指定のフィールドにセットします
1で取得したレコード中の10番目のレコードの日付を、日報アプリの指定のフィールドにセットします
基準日から20営業日後の日付のセット
まず、営業日アプリから、日報アプリの基準日より営業日アプリの日付が後のレコードを20件取得します。
そして、取得した20件のレコード中で、一番後(最大)の日付を指定のフィールドにセットします。
ここでは、やること「条件を組み立ててレコードを取得する」、条件「レコードを保存する直前(削除時は除く)」と、
やること「レコード中のフィールド最大値を計算する」、条件「他のアクションの実行が完了した時」を用います。
この時「条件を組み立ててレコードを取得する」の「最大取得件数」には 20 と入力してください。
検索条件には次の画像のように条件を指定します。
上記の「検索条件」と「最大取得件数」により「日報アプリ」の「基準日」以降の日付を持つレコードを「営業日アプリ」から20件取得できます。
基準日から10営業日後の日付のセット
次に、アクション3番で取得したレコードを使用して、10営業日後の日付をセットします。ここでは、やること「フィールドに値をセットする」、条件「他のアクションの実行が完了した時」を使用します。
セットする「値」には以下の式を設定するのですが、入力補助で設定した式に対して手入力で編集する必要があります。
= $3[9].日付
※この式は「アクション3番で取得したレコードのうち10番目のレコードの日付フィールド」を意味します
この編集をどのように行うのかというと、まず「値」を設定する際の入力補助を使用して、 他のアクションの結果 > アクション3番 > 日付 と選択すると以下の式が設定されます。
= $3[0].日付
※この式は「アクション3番で取得したレコードのうち1番目のレコードの日付フィールド」を意味します
次に、手入力で、[ ]の中に○営業日後の「○ -1」の数値を入れます。今回は10営業日後なので、「9」を入れます。そうすることで、取得したレコードの○番目のレコードの日付(○営業日後の日付)を取得することができます。
なお、アクション3番で、日付が「2024-04-01」以降のレコードを10件取得し、日付を昇順で並べ替えた場合は次のような形でそれぞれ指定できます。
実行結果のイメージ
日報アプリにて、基準日に「2024-04-01」を入れてレコード保存すると、次のようになります。
この方法ならば○営業日後のフィールドが増えても、アクション5番と同じようなアクションを増やすだけで対応可能です。
まとめ
営業日数を取得したり、営業日数から日付を取得したりなど、仕事の上ではよくあるケースですので是非お試しください。
なお、逆パターンの、日付を指定すると営業日数を計算する方法はこちらの方法で可能です。
あわせて、ご確認ください。
ご不明点等ございましたら、チャットにてご質問ください!
Customineドキュメントやサポートページもぜひご活用ください。