テーブル内の数値計算

いつもお世話になっております。

表題について質問いたします。

 

https://developer.cybozu.io/hc/ja/articles/202422244-%E7%AC%AC6%E5%9B%9E-%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB%E3%81%AE%E5%80%A4%E3%82%92%E5%88%A9%E7%94%A8%E3%81%99%E3%82%8B

こちらの記事を参考に以下のようなプログラムを導入しています。

 

(function(){
 “use strict”;
 
   kintone.events.on(“app.record.detail.show” ,  function(event){
     if (!event.record){
       return;
       }
      
       var subTotals = new Array();
       var tableRecords = event.record.Table.value;
      
       for (var i = 0; i < tableRecords.length; i++) {
        var category = tableRecords[i].value[“科目”].value;
        if (!subTotals[category]) {
            subTotals[category] = 0;
            }
           
        var number = tableRecords[i].value[“合計”].value;
        var price = tableRecords[i].value[“A”].value;
               
        subTotals[category] += price * number ;
        }
        
        var myTotalSpace = document.createElement(“ul”);
        for (var category in subTotals){
          var categorySpace = document.createElement(“li”);
          categorySpace.innerHTML = category + “:” + subTotals[category] + “円”;
          myTotalSpace.appendChild(categorySpace);
          }
         
          kintone.app.record.getSpaceElement(“totalspace”).appendChild(myTotalSpace);
          });
         })();

以下のように、科目ごとに、「距離(合計)」*「1㎞あたり金額」を計算しております。

 

ここにさらに、「その他費用(高速代/電車代等)」を計算に加えたいと考えています。

例えば、以下のような数値を入力した場合には、

旅費交通費は、16*25+1,000=1,400

当社交通費は、14*25+1,000=1,350

と表示させたいです。

そして、以下のようにコードを変更しましたが、思ったように計算ができません。

 

(function(){
 “use strict”;
 
   kintone.events.on(“app.record.detail.show” ,  function(event){
     if (!event.record){
       return;
       }
      
       var subTotals = new Array();
       var tableRecords = event.record.Table.value;
      
       for (var i = 0; i < tableRecords.length; i++) {
        var category = tableRecords[i].value[“科目”].value;
        if (!subTotals[category]) {
            subTotals[category] = 0;
            }
           
        var number = tableRecords[i].value[“合計”].value;
        var price = tableRecords[i].value[“A”].value;
        var AAA = tableRecords[i].value[“その他費用”].value;
               
        subTotals[category] += price * number + AAA ;
        }
        
        var myTotalSpace = document.createElement(“ul”);
        for (var category in subTotals){
          var categorySpace = document.createElement(“li”);
          categorySpace.innerHTML = category + “:” + subTotals[category] + “円”;
          myTotalSpace.appendChild(categorySpace);
          }
         
          kintone.app.record.getSpaceElement(“totalspace”).appendChild(myTotalSpace);
          });
         
         })();

 

上のコードに、

        var AAA = tableRecords[i].value[“その他費用”].value;
               
        subTotals[category] += price * number + AAA ;

を加えただけです。

実際の画面は以下のようになり、文字結合がされるだけとなります。

以上のコードをどのように変更すれば、機能の実装ができますでしょうか。

教えていただけると助かります。

 

よろしくお願いいたします。

 

kintoneのフィールドのvalueは、数値フィールドであっても文字列として返ってきます。

そのため、

 

 var AAA = tableRecords[i].value[“その他費用”].value; 
 subTotals[category] += price * number + AAA ;

 

を、

 

 

var AAA = tableRecords[i].value[“その他費用”].value; 

subTotals[category] = Number(subTotals[category]) + (Number(price) * Number(number)) + Number(AAA) ;

 

とすれば直るかと思います。

大西様

ご回答いただきありがとうございます。

思ったような動きになりました!

ありがとうございました!