明細の合計値から特定の文字列を表示する

明細の合計値から特定の文字列を表示するサンプルをご紹介します。

サンプルについて

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


利用するイベント

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

サンプルフォーム

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

パーツID

パーツタイプ

補足

fidItemValue

テキスト(一行)パーツ

数値型

※明細の1列目

fidEvaluation

テキスト(一行)パーツ

ノーマル


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

/**
* 合計値から評価段階を取得します。
*
* @param {*} value
*/
function getEvaluation(value) {
if (value >= 80) {
return 'A';
}
if (value >= 60) {
return 'B';
}
if (value >= 40) {
return 'C';
}
if (value >= 20) {
return 'D';
}
if (value > 0) {
return 'E';
}

return '';
}

// テーブルパーツの明細の値に変更があった場合、明細の合計から評価段階をセットするイベント
collaboflow.events.on(['request.input.fidItemValue.change'], function (e) {
if (!'table_id' in e || !'row_index' in e) {
return;
}

let totalValue = 0;
const rows = e.parts[e.table_id].value;

// 明細行の合計を取得
for (let rowIndex = 0, rowLength = rows.length; rowIndex < rowLength; rowIndex++) {
let row = rows[rowIndex];
const itemValue = row['fidItemValue'].value;

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

totalValue += Number(itemValue);
}

// 評価段階をセット
e.parts['fidEvaluation'].value = getEvaluation(totalValue);
});
})();

動作の確認手順

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