kintoneではテーブルの列の合計はSUMで簡単に合計をすることが出来ます。

この合計する値が必須の場合は良いのですが、値があったりなかったりするフィールドを合計したい場合に、途端に困ってしまいます(「#N/A!」というエラーになり計算されません)。

今回は、このような場合に gusuku Customine 使うとどうなるか?ということをご紹介してみたいと思います。


Customineの基本的な事柄は、こちらの「はじめてのカスタマイズ」をご参照ください。


利用想定シーン

今回は簡単な例として、月ごとに1レコードの勤怠表を提出するようなケースを考えてみます。

この場合、テーブルに日毎の勤怠情報を入力するような形を取ると良さそうです。


アプリのフォームは、例えば最低限以下のようなフィールドが必要になるかと思います。

テーブルの「勤怠時間」は開始時刻と終了時刻のフィールドから自動的に計算するように設定しておきます。休憩時間は必須入力として、時間外の勤務は時間外労働があった場合に入力してもらう、という運用ルールと仮定しましょう。


「勤務時間合計」のフィールドは以下のようなシンプルなSUMを使った計算フィールドで表現することが出来ます。


問題は、値が入ったり入らなかったりする可能性のある、「時間外勤務合計」のフィールドです。

これをCustomineで合計してみましょう。


Customineの設定

ここでは、なるべく標準の計算フィールドと同じような動きにすることを考えてみます。おそらく次のようなステップで、出来ると思います。

  • 合計するフィールドを無効化しておく
  • 条件によってテーブル行を合計
  • 合計した値をフィールドにセット

それではやってみましょう。


まずフィールドを無効化する

計算フィールドは、kintoneの場合ユーザーが入力できないように無効化されていますので、まずその設定をします。

  • 「やること」にカテゴリー:フィールドの中から、「フィールドを無効化する」を選択します
  • 「フィールド」には「時間外勤務合計」を選択します

これでこのフィールドには値が入力できなくなります。

条件はデフォルトの「追加画面・編集画面を表示した時」でいいと思います。「一覧画面の鉛筆を押した時」は「一覧画面の鉛筆を押した時は含めない」にしてきます。

最終的にはこのような形になります。

時間外のフィールドを合計する

次に、入力された時間外のフィールドを合計することを考えます。まずは「やること」から考えてみましょう。

カテゴリー:集計の中に、「条件に合うテーブル行のフィールド合計値を計算する」がありますので、これを利用すると良さそうです。


それぞれ、以下のように設定します。歯抜けのデータを集計することになりますので、条件の付け方にちょっと工夫が必要です。

  • 「計算するフィールド」には「時間外」を選択します
  • 「条件判定フィールド」にも「時間外」を選択します
  • 「条件」には「大きい(>)」を選択します
  • 「比較値」には「0」を入力します

この条件と比較値の組み合わせで、値が入ったときだけ集計することが出来るようになります。「やること」の設定はこうなりますね。


次にこの集計を実行する条件ですが、どのように設定すべきでしょうか?


当初の目標として「標準の計算フィールドと同じような動きにする」ということを考えていましたので、「時間外」フィールドに値が入ったらすぐに実行するようにしましょう。


これを実現するために、条件として「フィールドの値を編集して値が変わった時」を選択します。フィールドは、テーブルの中の「時間外」を選択します。「一覧画面の鉛筆を押した時」は「一覧画面の鉛筆を押した時は含めない」にしてきます。最終的にはこのような形になります。

合計した値をフィールドにセットする

値を合計しただけではどこにも出力されませんので、最後に合計した値をフィールドにセットします。ここまでくれば、これはもう簡単ですね。

  • 「やること」でカテゴリー:フィールドの中から「フィールドに値をセットする」を選択します
  • 「フィールド」には「時間外勤務合計」を選択します
  • 「値」には「他のアクションの結果」から「条件に合うテーブル行のフィールド合計値を計算する」のアクションを選択します。

「条件」には「他のアクションの実行が完了した時」で、合計が計算し終わったら実行するように設定しておきましょう。


最終的には、このような形になります。「kintoneアプリへ登録」して動きを確認してみてください。



まとめ

テーブルの集計を実行するカスタマイズは以上になります。この「条件に合う」系の集計は、テーブルに限らず別のアプリもしくは自分自身のアプリから取得したレコードに対しても条件を設定できます。応用次第で様々な局面で便利に利用できますので、ぜひお試しください。


条件を判定するフィールドと実際に集計するフィールドが別に設定できるというのも面白いところです。集計には、合計・平均・最大値・最小値が計算可能ですので、ぜひ様々なカスタマイズでご活用ください。


もし分からないことがありましたら、フォーラムの方でご質問ください。