明細の対象となる行の合計を算出するサンプルをご紹介します。
サンプルについて
本サンプルのソースコードについてや、カスタマイズ方法等の技術的なお問合せは承っておりません。動作イメージ
利用するイベント
サンプルフォーム
サンプルで利用するフォームには、以下のパーツを配置しています。
パーツID | パーツタイプ | 補足 |
---|---|---|
fidCalculatedTarget | チェックボックスパーツ | チェック時の表示コメント:〇 未チェック時の表示コメント:空 ※明細の1列目 |
fidAmount | テキスト(一行)パーツ | 金額型 ※明細の2列目 |
fidTargetTotal | テキスト(一行)パーツ | 金額型 |
カスタマイズコード
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;
});
})();
動作の確認手順
- アプリ設定>フォーム設定から新規にExcelフォームを作成します。
- サンプルフォームに、先で記載されている必要項目を配置します。
- サンプルフォームを再度表示し、カスタマイズのタブを表示します。
- サンプルのJavaScriptカスタマイズコードをjsファイルに保存します。
- 保存したファイルをアップロードします。
- アプリ設定>経路設定から、先のフォームを利用した経路を作成します。
- 新規文書から作成した経路名をクリックします。
- 申請画面が表示されます。
- 金額を入力し、計算対象のチェックをONにすると対象合計が計算されます。
コメント
0件のコメント
記事コメントは受け付けていません。