エヌ・ドット・ジェーピー

  • line

kintoneのカスタマイズ。関連レコードのデータを集計・計算する。

kintoneアプリの関連レコード内のデータを集計する。

今回は関連レコード内のデータを集計してみます。
関連レコード内のデータは自動計算では使用できないため、何気に需要があるのではないでしょうか。
それでは行ってみましょう。

アプリの準備。

今回は取引を登録するアプリがあり、その取引に必要な原材料のようなものを関連レコードで引っ張ってくる、という状況を考えてみます。
なのでアプリは2つ。
いうなれば、取引アプリと原材料アプリです。必要に応じ適宜読み替えて考えていただければと思います。

取引アプリは以下のようなものになります。
取引アプリ



原材料アプリは以下のようになります。関連するキーは取引No.で、取引アプリのレコード番号になります。
原材料アプリ

関連レコードを集計するためのカスタマイズ。

取引アプリのレコード番号と紐づく原材料のデータが関連レコードとして表示されます。
関連レコードのイメージ

この金額を集計してみます。
関連レコードの下あたりに集計した金額を表示するためのスペースフィールドと、その内容を示すラベルを貼り付けます。
取引アプリにスペースフィールドを追加

スペースフィールドの要素IDは「spTotal」としました。

関連レコードで引っ張ってきたデータは、javascriptでは扱えないようです。
そのため関連レコードで設定した条件で、原材料アプリから再度レコードを取得する必要があります。そのため、kintone APIを使用します。


var query = '取引No=' + kintone.app.record.getId();
var params = {
'app': 2804,
'query': query
};


まずはレコード取得の条件を設定します。
「app」が検索対象のアプリで、アプリのURLの数字の部分になります。
「query」では検索条件を指定します。今回はレコード番号になります。kintone.app.record.getId()で今開いているレコードのレコード番号を取得します。


kintone.api(kintone.api.url('/k/v1/records', true), 'GET', params, function(resp) {
var total = 0;
for (var i = 0; i < resp.records.length; i++) {
total += parseFloat(resp.records[i].金額.value);
}

kintone.app.record.getSpaceElement('spTotal').innerHTML= total;
return event;
});

取得したレコードをfor文で集計します。
resp.records.lengthが取得したレコード数となりますので、その回数集計を繰り返します。
最後に集計した金額をspTotalのinnerHTMLに表示します。

スペースフィールドに合計金額を表示。

集計の表示
無事用意したスペースフィールドに合計が表示されました。

実は今回のコードには落とし穴があり、kintone APIの仕様で原材料アプリを検索する際、100件のレコードまでしか対象になりません。
原材料アプリの関連レコード数が増えてくるとうまくいかなくなってくると思います。
この解決方法は次回以降で解説しますのでお楽しみに。



ゴートップではkintoneを活用した業務の効率化のご相談を承っております。
現在の業務に課題を抱えている方は是非ゴートップにお問い合わせください。

詳しくは当社kintoneソリューションサービスのページをご覧ください。



さまざまな方や企業の多様なニーズにお応えする「エスコートン」サービスの提供を開始しました。
お悩みに合わせた3つのサービスメニューをご用意しました。

エスコートン

  • line

お問い合わせ

お気軽にお電話ください。

0120-98-0016