案件管理アプリに登録された、案件ごとの開始日付から終了日付の日数を月ごとに分割してテーブルに登録し、テーブルの値を元に日数を集計するカスタマイズを紹介します。

kintoneアプリ

案件管理アプリ

レコードを保存した時に、「開始日付」から「終了日付」の期間で月ごとの日数をカウントして「計算用テーブル」に保存します。


計算用テーブルの「集計キー」には、テーブル内の開始日と案件名(フィールドコードは「案件名_明細」)の値を結合する式を指定し、集計用のキーとして使用します。


計算式:

DATE_FORMAT(開始日, "YYYY年MM月", "Asia/Tokyo")&案件名_明細


月と案件ごとの稼働日数集計アプリ

案件管理アプリの複数レコードを集計し、「案件名」と「年月(対象月)」が同じテーブル行の日数を集計して保存します。


カスタマイズ例

レコード保存時のカスタマイズ:

案件管理アプリのレコード保存時に、テーブルに月ごとの日数を計算してセットするカスタマイズです。


アクション6:

保存ボタンを押すたびに日数のカウントをやり直すため、

kintoneの保存ボタンを押した時に既存のテーブル行を削除します。


やること「フィールド値をクリアする

フィールド:計算用テーブル

条件:「レコードを保存する直前(削除時は除く)


アクション15:

アクション7で取り出す日付を月初の日付にするため(2026年7月であれば2026-07-01、2026年8月であれば2026-08-01)、開始日付を元に月初の日付を取得します。


やること「基準日から特定の日付を取得する

基準日:= 開始日付

日付の種類:当月月初

セット先フィールド(省略可):選択なし

条件「他のアクションの実行が完了した時

アクション:6


アクション7:

やること「日付の範囲から日付を取り出す」の、

「開始日」にアクション15で取得した日付、「終了日」に終了日付フィールドの値、

「増分」に1、「単位」に月を指定して日付を取り出します。


このように指定することで、開始日付が「2026-07-15」、終了日付が「2026-08-05」の場合、

アクション15で計算した開始日付の月初「2027-07-01」から1か月ごとの日付を取り出すため、


2026-07-01

2026-08-01


が取り出されます。


なお、開始日付をそのまま「開始日」に指定すると、
開始日付:2026-07-15、終了日付:2026-08-05のように開始日付の1か月後(2026-08-15)より終了日付が小さい場合に8月の日付を取り出せないため、
開始日付の当月月初を「開始日」に使用します。


やること「日付の範囲から日付を取り出す

開始日:= $15

終了日:終了日付

増分:1

単位:月

除外する曜日:除外しない

条件「いずれかのアクションの実行が完了した時

アクション:15,18


アクション17:

アクション7で取り出した日付を元に、当月の月末を計算します。


やること「基準日から特定の日付を取得する

基準日:= $7

日付の種類:当月末日

セット先フィールド(省略可):選択しない

条件「リストから要素を取り出した時

アクション:7


アクション16:

月ごとの日数を計算します。


前提として、アクション7では、常に「2026-07-01」のような月初の日付が取り出されるように設定しています。


アクション7で取り出した日付と、開始日付フィールドの日付が同じ月であれば日数のカウントの開始日は開始日付フィールドの値、

そうでなければアクション7で取り出した「2026-07-01」のような月初の日付を指定します。


同様に、終了日については、アクション7で取り出した日付と終了日付の月が同じ月であれば日付のカウント終了日は終了日付の値、

そうでなければアクション17で計算した月の末日を指定します。


やること「日数を計算する

開始日:

=if(format($7,"YYYYMM") = format(開始日付,"YYYYMM"),開始日付, $7)

終了日:

=if(format( $17,"YYYYMM") = format(終了日付,"YYYYMM"),終了日付, $17)

セット先フィールド(省略可):選択しない

条件「他のアクションの実行が完了した時

アクション:17


アクション18:

テーブルに行を追加します。


やること「テーブルに行を追加する

テーブル:計算用テーブル

追加場所:テーブルの末尾

各フィールドの値:※マッピングを参照してください。


マッピング:

セットする値

セット先のフィールド

= 案件名 

案件名

= $7 

対象月

=if(format($7,"YYYYMM") = format(開始日付,"YYYYMM"),開始日付, $7)

開始日

=if(format( $17,"YYYYMM") = format(終了日付,"YYYYMM"),終了日付, $17)

終了日

= $16 +1

作業日数


条件「他のアクションの実行が完了した時

アクション:16



以上でレコード保存時のカスタマイズは完了です。


集計のカスタマイズ:

案件管理アプリの一覧画面のボタンを押すと、一覧の全レコードのテーブルを取得して集計し、月と案件ごとの稼働日数集アプリに集計結果をレコード追加するカスタマイズです。


アクション19:

一覧にボタンを配置します。


やること「ボタンをメニュー位置に配置する

場所:一覧画面メニューの下側

ラベル:集計結果を登録

追加位置:一番右に追加する

条件「一覧画面を表示した時


アクション20:

kintoneの一覧で設定された一覧の条件で、次ページ以降も含めて全レコードを取得します。処理対象のレコードを変えたい場合は、このやることを「条件を組み立ててレコードを取得する」などに変更してください。


やること「一覧の条件でレコードを全件取得する

条件「ボタンを押した時


アクション21:

アクション20で取得したレコード内の、すべてのテーブル行をまとめて取得します。


やること「他のレコード内のテーブルをレコードとして取得する

テーブルを含むレコード:20

テーブル:計算用テーブル

空の行を取得するかどうか:空の行は取得しない

複数レコードがある場合:すべてのレコードのテーブルを結合する

条件「他のアクションの実行が完了した時

アクション:20


アクション23:

アクション21でレコードとして取得したテーブル行から、「集計キー」フィールドの値で重複を除去します。

重複の除去は、「キーとなるフィールド」に指定したフィールドの値毎の集計を行いたい時によく使う方法です。

重複を除去することで、レコードは「集計キー」フィールドの値1つにつき1レコードの状態になります。


やること「レコードから重複を除去する

レコード取得アクション:21

キーとなるフィールド:集計キー

条件「他のアクションの実行が完了した時

アクション:21


アクション24:

アクション23で「集計キー」フィールドの値1つにつき1レコードになったので、このレコードをもとに「月と案件ごとの稼働日数集計」アプリにレコードを追加します。

今回は常にレコード追加を行いますが、すでに「集計キー」が同じ値が存在する場合は更新、なければ追加したいのであれば、「月と案件ごとの稼働日数集計」アプリにも集計キーフィールドを追加した上で、やることを「レコードを更新または追加する(キーの値を直接指定)」に変更してください。


なお、このアクションは「日数」のマッピングがポイントです。

findif 関数 を使用した式だけで、アクション21で取得したすべてのテーブル行から、重複を除去した後の各レコードの「集計キー」を使用してレコードを絞り込むことができます。

絞り込んだ結果の作業日数フィールドの値を sum 関数 で集計すれば、集計キーごとの作業日数を合計した値が「日数」フィールドにセットされます。


やること「レコードを書き出す

レコード:23

書き出し先アプリ:月と案件ごとの稼働日数集計

マッピング:※マッピングを参照してください。

更新または追加:新規にレコードを追加


マッピング:

セットする値

セット先のフィールド

= 案件名_明細 

案件名

= 対象月 

年月

=sum(findif( $21.集計キー,"=", 集計キー , $21.作業日数 ))

日数


条件「他のアクションの実行が完了した時

アクション:23


以上で集計のカスタマイズは完了です。

実際にレコードを追加してお試しください。



ご不明な点がございましたら、チャットでお問い合わせください。

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