テーブル内の日付に空欄が含まれる数値を集計してフィールドに入れたい

はじめまして。最近kintoneを使いだしました。

さて、https://developer.cybozu.io/hc/ja/community/posts/115019057363 を参考に日付が空白のレコードの合計を取得したいのですが、どのようにアレンジしたらよいか分からず苦戦しています。

どなたか 参考になりそうなコードや事例があれば ご教示いただけませんでしょうか。よろしくお願いいたします。

まず、日付が入っていない場合ってところを判定する必要がありますね。

if (!rows.value['日付'].value){
}

で日付が入っていない場合の判定ができるので、その判定をソースに組み込む必要があります。

if (Object.keys(kamokuInfos).indexOf(kamoku) >= 0) {
var tcode = kamokuInfos[kamoku];
if (rows.value['金額'].value) {
// ここから追加
if (!rows.value['日付'].value){
record['日付未記入合計'].value += Number(rows.value['金額'].value);
} else {
record[tcode].value += Number(rows.value['金額'].value);
}
// ここまで
}
}

こんな感じでしょうか。

合計フィールドの初期値に0を入れている処理があると思いますので、そこも対応が必要ですね。

大変わかりやすい説明ありがとうございます。

おかげで日付が空欄の値を集計することができました。

可能であれば追加で教えていただきたいことがございます。

今回作成したいアプリでは

日付はあとから編集する形にしたいのですが(最初にデータを保存するときは日付空欄。確定後日付入力。)

編集してもうまく更新されません。

レコードの編集の都度、更新するにはどのようにしたら良いかお知恵をかしていただけないでしょうか。

集計できたのならよかったですね!

 

追加の部分に関しては、「レコード編集時」に「日付」を「変更したとき」というイベントで今回の処理が実行されればよいということになりますよね。

ならそのイベントでこの処理を走らせるようにしましょう。

 

今回の場合、イベントは「app.record.edit.change.日付」となります。読んでそのまんまですね。

fields.forEach(function(field) {
events.push("app.record.edit.change." + field);
events.push("app.record.create.change." + field);
})

このforEach文の所で各項目に対してチェンジイベントの文字列を作成しています。

使っているのは「fields」の配列を使用しているので、その配列を見ましょう。

一番上の所に

var fields = ['科目', '金額', 'Table'];

とあると思います。

この配列数分ループしてイベント文字列を作成しているので、「科目」「金額」「サブテーブル」の変更イベントに対応しているわけですね。

なので、ここに「日付」を入れてあげることで日付の変更イベントも作成してもらえばいいわけです。

var fields = ['日付','科目', '金額', 'Table'];

これで日付の変更イベントでも更新処理が行われると思いますよ。

詳しく教えてくださりありがとうございます。無事にできました。

おかげで参考元のJavaSrtiptの内容の理解も進みました。