- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
01-19-2022 11:14 PM
繰り返し処理の中で処理時間の合計を算出したい箇所があります。
resultの属性は文字列であるため、whileの中で加算することができず、
この要件を満たすにはスクリプトをどのようにすればよいでしょうか?
parseInt()もだめでした。
while (XXX != null) {
var timer = new OCTimer();
timer.start("test");
・
・
・
timer.stop('test');
var result = timer.result();
gs.info(result);
・
・
・
}
解決済! 解決策の投稿を見る。
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
01-22-2022 05:19 AM
2通り案を出させていただきます。
(言うまでもないですが他にも良い方法はあるかと思います。)
方法1. 測定したい期間で別のタイマーを動作させる。
var timer = new OCTimer();
for (var i=1; i<10; i++){
timer.start("test"+i);
gs.sleep(1000);
timer.stop("test"+i);
}
var result = timer.result();
gs.info(result);
//実行結果
*** Script: DEFAULT Performance Timings
01.000 test1 invoked: 1
01.000 test2 invoked: 1
01.000 test3 invoked: 1
01.000 test4 invoked: 1
01.000 test5 invoked: 1
01.000 test6 invoked: 1
01.001 test7 invoked: 1
01.000 test8 invoked: 1
01.000 test9 invoked: 1
09.001 [TOTAL] for: DEFAULT Performance Timings
方法2. GlideDateTimeで現在時刻を取得し、Array等に保持する
//サンプルコード
var time = [];
for (var i=1; i<10; i++){
time.push(new GlideDateTime().getNumericValue());
gs.sleep(1000);
}
gs.info("totalTime:" + (time[time.length - 1] - time[0]));
gs.info("laptime");
for (var j=1; j<time.length; j++){
gs.info(j + ":" + (time[j]-time[j-1]));
}
//実行結果
*** Script: totalTime:8002
*** Script: laptime
*** Script: 1:1001
*** Script: 2:1000
*** Script: 3:1000
*** Script: 4:1000
*** Script: 5:1000
*** Script: 6:1001
*** Script: 7:1000
*** Script: 8:1000
ご質問に対する回答になっているでしょうか。ご確認よろしくお願いいたします。
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
01-19-2022 11:24 PM
Hi,
Can you share more details on what are you trying to achieve ? This will help me to assist you better.
Regards,
Shloke
Regards,
Shloke
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
01-19-2022 11:28 PM
こんにちは。
parseInt()ではなくnumber()を使用しても動作しないでしょうか。
ServiceNowはJavascriptのVersionが低く、一部動作しない関数があります。
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
01-19-2022 11:44 PM
返信ありがとうございます。
以下でやってみましたが、resultの中身はNaNとなり、だめでした。
var result = 0;
while (XXX != null) {
var timer = new OCTimer();
timer.start("test");
・
・
・
timer.stop('test');
result = result + timer.result();
gs.info(Number(result));
・
・
・
}
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
01-20-2022 12:33 AM
文字列の中に数字以外の文字が含まれると、該当の「NaN」のエラーとなります。
詳しくはJavascriptのnumber()関数の仕様をご確認ください。
まずは対象の文字列データの見直しを行ってみてはいかがでしょうか。