概要
- 1週間以上何も更新されていないインシデントに対してスケジュールジョブによるバッチ処理でメールを通知する仕組みを導入したときに1週間以上何も更新されていないインシデントのデータを用意する必要があった。
- 普通に更新したら現在日時で更新されてしまうからどうしたものかと思っていた。
解決案
-
gr.autoSysFields(false)
というメソッドを使えばsys_updated_onへの自動更新がされないので、設定した値で更新することができる。 - https://www.servicenow.com/docs/ja-JP/bundle/vancouver-api-reference/page/app-store/dev_portal/API_reference/GlideRecord/concept/c_GlideRecordAPI.html#title_r_GlideRecord-autoSysFields_Boolean
サンプル
var gr = new GlideRecord('incident');
var sys_id = 'hogehoge' //実際はハッシュ値;
if (gr.get(sys_id)) {
gr.autoSysFields(false); // 更新者情報を変更しない
gr.sys_updated_on = '2025-02-02 00:00:00';
var success = gr.update();
gs.info('Update success: ' + success);
}