- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
03-28-2022 01:21 AM
現在、フローデザイナーで、日時をソートするアクションを作成しています。
やりたいこととしては、複数レコードを入力値とし、日時の昇順に並べ替え、配列で出力したいと考えています。
以下、自身で書いてみましたが、上手くいかないためご教授いただければ幸いです。
(function execute(inputs, outputs) {
var asc_array = [];
while (inputs.asset_records.next()) {
var array = [];
array[0] = inputs.asset_records.getValue("u_assign");
array[1] = inputs.asset_records.getValue("u_model");
array[2] = inputs.asset_records.getValue("u_work_start");
array[3] = inputs.asset_records.getValue("u_work_end");
array[4] = inputs.asset_records.getValue("u_parent");
asc_array.push(array);
}
asc_array.sort(function(a, b){
outputs.asc_array = (a > b ? 1 : -1);}
})(inputs, outputs);
解決済! 解決策の投稿を見る。

- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
03-28-2022 02:22 AM
aさん、
具体的にどのフィールドでソートするのでしょうか?u_work_startでしょうか?
日付の場合は形式を重要です。例えた形式がmm/dd/yyyyやdd/mm/yyyyでは直接の値でソートしても正しくなりません。列の型がDateなのかDate/Timeであるのかも関係します。
なお、レコードを取得する時に予めてソートしておくのはどうでしょうか?

- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
03-29-2022 07:20 PM
フローデザイナーを利用してレコードを更新する場合はアクションで行うよりも、「各」ステップで当該レコードを取得して、「レコードを更新」することもできます。
アクションを利用してスクリプトを実行するのであれば最初からビジネスルールやスケジュールジョブでスクリプトで書いた方がよいです。
var gr = new GlideRecord('<処理するテーブル名>');
gr.addActiveQuery();
gr.addQuery('<フィールド名>', '<条件>', '<値>'); // 条件を設定
gr.orderBy('「作業開始時間」');
gr.query();
var indx = 1;
while(gr.next()) {
gr.<「優先順位」フィールド名> = indx;
indx++;
gr.update();
}
最後になりますが、一つを質問に別の質問をするのは避けてください。一つのスレッドに複数の質問があると複数の正解があることになります。他参加者から文句を言われることになります。
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
03-29-2022 09:04 PM
ご回答ありがとうございます。
とても参考になりました。
>最後になりますが、一つを質問に別の質問をするのは避けてください。一つのスレッドに複数の質>問があると複数の正解があることになります。他参加者から文句を言われることになります。
申し訳ございません。以後、改めます。