ダッシュボードでの表示方法について(その2)

Tsukuru Yuasa
Tera Contributor

お世話になっております。
ダッシュボードでの表示方法について伺いたく、投稿しました。

 

やりたい内容としては、あるテーブルのフィールドAとフィールドB(ともに件数などの値が入っている想定)が
入っているときに、(フィールドAの合計)/(フィールドBの合計)(=以下Cと記載)を%で表示させ、

 

さらにそのC(%)と、基準値D(%)を比較して、C=<Dであれば「達成」、C>Dであれば「未達」のように
ダッシュボードに表示したいです。どのようにすれば良いでしょうか?

 

よろしくお願いいたします。

5 REPLIES 5

iwai
Giga Sage

Widget の Dynamic Content で 計算して 比較した結果を表示する方法はどうでしょうか。コードは下記のようになります。Configure dynamic blocks (servicenow.com)

<?xml version="1.0" encoding="utf-8" ?>
<j:jelly trim="false" xmlns:j="jelly:core" xmlns:g="glide" xmlns:j2="null" xmlns:g2="null">
	<g:evaluate var="jvar_result" object="true" >
		var result = {};
		var sumA;
		var sumB;
		var valueC;
		var valueD;
		var gr = new GlideAggregate('u_test_excel_20221031');
		gr.addAggregate('SUM', 'u_field_a');
		gr.addAggregate('SUM', 'u_field_b');
		gr.setGroup(false);
		gr.query();
		if (gr.next()) {
			sumA = parseFloat(gr.getAggregate('SUM', 'u_field_a'));
			sumB = parseFloat(gr.getAggregate('SUM', 'u_field_b'));
			valueC = sumA / sumB;
			valueD = parseFloat(1);
			if (valueC &lt;= valueD) {
				result = {"result":'達成 A '+sumA+', B '+sumB + ', valueC ' + valueC.toFixed(2),"valueC":(valueC*100).toFixed(2)};
			} else {
				result = {"result":'未達成 A '+sumA+', B '+sumB + ', valueC ' + valueC.toFixed(2),"valueC":(valueC*100).toFixed(2)};
			}
		}
		result;
	</g:evaluate>
	<p style="text-align:center; font-size: xx-large;">${jvar_result.result}</p>
	<p style="text-align:center; font-size: xx-large;">${jvar_result.valueC} %</p>
</j:jelly>

リプライありがとうございます。
こちらもContent BlocksのDynamic Contentで、いただいた情報を試してみます。

本件、コメントありがとうございました。

いただいた情報で実現できそうでした。


追加でご存じでしたら教えていただきたいのですが、
本件のように達成/未達成の判定を複数の対象で実施し、

その結果を「3件/5件達成」のように表示させたいと

考えているのですが、実現方法わかりますでしょうか?

判定を複数の対象で実施する場合は、下記のような処理になります。

<j:jelly trim="false" xmlns:j="jelly:core" xmlns:g="glide" xmlns:j2="null" xmlns:g2="null">
	<g:evaluate var="jvar_result">
        var tassei=0;//達成件数
        var count=0;//全体件数
        // 達成判定 1
		var gr = new GlideAggregate(/*データテーブル*/);
        if (/*判定*/) {
            tassei++;
		}
        count++;
        // 達成判定 2
		gr = new GlideAggregate(/*データテーブル*/);
        if (/*判定*/) {
            tassei++;
		}
        count++;
        // 達成判定 3
		gr = new GlideAggregate(/*データテーブル*/);
        if (/*判定*/) {
            tassei++;
		}
        count++;
        result = tassei + '件/' + count + '件達成';
		result;
	</g:evaluate>
	<p style="text-align:center; font-size: xx-large;">${result}</p>
</j:jelly>