明細の対象行の合計を算出する

明細の対象となる行の合計を算出するサンプルをご紹介します。

サンプルについて

本サンプルのソースコードについてや、カスタマイズ方法等の技術的なお問合せは承っておりません。
動作イメージ


利用するイベント

申請入力画面イベント(パーツ値変更イベント)

サンプルフォーム

サンプルで利用するフォームには、以下のパーツを配置しています。

パーツID

パーツタイプ

補足

fidCalculatedTarget

チェックボックスパーツ

チェック時の表示コメント:〇

未チェック時の表示コメント:空

※明細の1列目

fidAmount

テキスト(一行)パーツ

金額型

※明細の2列目

fidTargetTotal

テキスト(一行)パーツ

金額型


カスタマイズコード
JavaScript
JavaScript
Copied!
(function () {
"use strict";

// テーブルパーツの明細の値に変更があった場合、明細内の金額を再計算するイベント
collaboflow.events.on(['request.input.fidCalculatedTarget.change', 'request.input.fidAmount.change'], function (e) {
if (!'table_id' in e || !'row_index' in e) {
return;
}

let targetTotal = 0;

// 明細行の値を取得
const rows = e.parts[e.table_id].value;

for (let rowIndex = 0, rowLength = rows.length; rowIndex < rowLength; rowIndex++) {
let row = rows[rowIndex];
const amount = row['fidAmount'].value;

if (amount.length == 0 || !isFinite(amount) || amount.match(/^[+\-]*[0-9,.]+$/) === null) {
continue;
}

// 計算対象がONの金額のみを計算
if (row['fidCalculatedTarget'].value === '〇') {
targetTotal += Number(amount);
}
}

// 合計値をセット
e.parts['fidTargetTotal'].value = targetTotal;
});
})();

動作の確認手順

1. アプリ設定>フォーム設定から新規にExcelフォームを作成します。
2. サンプルフォームに、先で記載されている必要項目を配置します。
3. サンプルフォームを再度表示し、カスタマイズのタブを表示します。
4. サンプルのJavaScriptカスタマイズコードをjsファイルに保存します。
5. 保存したファイルをアップロードします。
6. アプリ設定>経路設定から、先のフォームを利用した経路を作成します。
7. 新規文書から作成した経路名をクリックします。
8. 申請画面が表示されます。
9. 金額を入力し、計算対象のチェックをONにすると対象合計が計算されます。