計算時の”0入れなきゃいけない問題”をJavaScriptで解消する

暑いですね。トッティです。

kintoneはレコード内で四則演算や、べき乗といった計算ができる賢い子なのですが、一部”困ったちゃん”な側面もあります。今回はそんな、困った部分をJavaScriptで解消してみます。

※なお、現在はこの問題、プリントクリエイターに「数値が「0」のときに出力しない設定」を実装したことにより解消いたしました!!!ご案内の記事はこちらになります。

計算対象は全て埋めなければならない

そうですね、これがいわゆる「0入れなきゃいけない問題」ですね。kintone側で計算対象となっている数値フィールドが空だと、計算結果にエラーが出てしまうんですよ。

エラーが出ちゃう
エラーが出ちゃう

計算対象となるフィールドは空であることが許されません。なので、足し算の場合は”0″を入れなければなりません。

0を入れなければならない
0を入れなければならない・・・

これ、、面倒ですよね!?

もちろん、上記のようなアプリ構成ではなく、テーブル化しても良いのですが、無料の項目が出てきたら結果は同じです。これはもうkintoneの「計算」に任せていられません!こちらでJavaScriptにより勝手計算しましょう。

この部分を「計算」ではなく、「数値」で設置します
この部分を「計算」ではなく、「数値」で設置します

と、いうわけで計算フィールドを撤去し、数値フィールドに切り替えます。

矢印で指しているフィールドは全て「数値」フィールドにしました
矢印で指しているフィールドは全て「数値」フィールドにしました

で、下記JavaScriptで計算を制御します。

それぞれ単なる「数値」のフィールドなので、空のフィールドがあっても計算エラーは出ません。ただ、間違って入力されると嫌なフィールド(小計・消費税・合計)は、編集不可にしておきましょう。

(function() {"use strict";var events = ["app.record.edit.show","app.record.create.show","app.record.create.submit","app.record.edit.submit","app.record.create.change.商品1金額","app.record.create.change.商品2金額","app.record.create.change.商品3金額","app.record.edit.change.商品1金額","app.record.edit.change.商品2金額","app.record.edit.change.商品3金額"];// レコードから取得できる数値は文字列なので、数値に変換する関数var getValue = function(field) {var value = parseFloat(field);if(!Number.isNaN(value)) {return value;} else {return 0;}};kintone.events.on(events, function(event) {var record = event.record;// 合計値を出すフィールドの編集を無効にするrecord["小計"].disabled = true;record["消費税"].disabled = true;record["合計"].disabled = true;// 小計を算出するvar sum = getValue(record["商品1金額"].value) + getValue(record["商品2金額"].value) + getValue(record["商品3金額"].value);record["小計"].value = sum;record["消費税"].value = sum * 0.08;record["合計"].value = sum * 1.08;return event;});})();

このJavaScriptを読み込んで、空のフィールドがあった際の動きを見てみます。

after_js
やった!空フィールドがあってもエラーが出てない!

これで計算はできました!今回のミッションはクリアです。これをプリントクリエイターに適用して、帳票として出力してみます。

空でも"0"でも問題無し
空でも”0″でも問題無し

できあがりです!「0入れなきゃいけない問題」にお悩みの方の参考になれば嬉しいです。

※上記JavaScriptは挙動を保証するものではございません。また、JavaScript開発に関するお問い合わせにはお応えできかねますので、予めご了承ください。

それではまた。

トヨクモのkintone連携サービスは30日間無料でお試しが可能です。自動で課金が開始されることはございませんので、「やっぱり必要ないな」と感じた時も、特に解約等のご連絡は不要です。以下のボタンよりお気軽にお試しくださいませ。

最新情報をチェックしよう!
>kintone連携サービスの定番【トヨクモ】

kintone連携サービスの定番【トヨクモ】

4000契約以上(2020年11月時点)、kintone利用ユーザーのうち、5社に1つは使われている定番のkintone連携サービス。全6製品とも30日間の無料お試しをご用意しております。お試しはこちらから。

CTR IMG