明細の対象行の合計を算出する
明細の対象となる行の合計を算出するサンプルをご紹介します。
サンプルについて
本サンプルのソースコードについてや、カスタマイズ方法等の技術的なお問合せは承っておりません。
動作イメージ

利用するイベント
申請入力画面イベント(パーツ値変更イベント)
サンプルフォーム
サンプルで利用するフォームには、以下のパーツを配置しています。
パーツID | パーツタイプ | 補足 |
fidCalculatedTarget | チェックボックスパーツ | チェック時の表示コメント:〇 未チェック時の表示コメント:空 ※明細の1列目 |
fidAmount | テキスト(一行)パーツ | 金額型 ※明細の2列目 |
fidTargetTotal | テキスト(一行)パーツ | 金額型 |
カスタマイズコード
JavaScript
JavaScript(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にすると対象合計が計算されます。