- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
04-12-2022 05:48 PM
現在、下記のクライアントスクリプトとスクリプトインクルードを使用してテーブルのレコードの内容をカタログアイテムを申請する際に反映させているのですが、「日付/時刻」がUTC時刻のまま反映されてしまいます
スクリプトインクルードの「getValue」を「getDisplayValue」に変更すると「日付/時刻」は、ユーザータイムゾーンで取得できることは確認していますが、この場合、その他の変数が取得できなくなります。
何かいい方法があればご教授いただけますと幸いです。
解決済! 解決策の投稿を見る。

- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
04-13-2022 12:08 AM
例:
スクリプトインクルード
var ClientUtil = Class.create();
ClientUtil.prototype = Object.extendsObject(AbstractAjaxProcessor, {
getRecord: function() {
var tableName = 'u_a0_sample_table';
var fieldInfoDict = {};
var str = this.getParameter('sysparm_key');
var gr = new GlideRecord(tableName);
if (gr.get('u_string_field', str)) {
var fields = gr.getFields();
for (var i = 0; i < fields.size(); i++) {
var gElement = fields.get(i);
var name = gElement.getName();
var type = gElement.getED().getInternalType();
if (type == 'glide_date_time' || type == 'glide_date') {
fieldInfoDict[name] = {
'type': type,
'value': gElement.getDisplayValue()
};
} else {
fieldInfoDict[name] = {
'type': type,
'value': gElement.getValue()
};
}
}
return JSON.stringify(fieldInfoDict);
}
},
type: 'ClientUtil'
});
クライアントスクリプト
function onChange(control, oldValue, newValue, isLoading, isTemplate) {
if (isLoading || newValue === '' || oldValue == newValue) {
return;
}
var ajax = new GlideAjax('ClientUtil');
ajax.addParam('sysparm_name', 'getRecord');
ajax.addParam('sysparm_key', newValue);
ajax.getXML(function(response) {
var answer = response.responseXML.documentElement.getAttribute("answer");
var fieldInfoDict = JSON.parse(answer);
for (var name in fieldInfoDict) {
var type = fieldInfoDict[name].type;
//if (type == 'glide_date' || type == 'glide_date_time') {
g_form.setValue(name, fieldInfoDict[name].value);
//}
}
});
}
実行結果

- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
04-12-2022 07:55 PM
forループではなく個々のフィールドをg_form.setValue()及びsetDisplayValue()で設定されてはどうでしょうか?
forループを利用するのであればスクリプトインクルードでフィールド型を取得してクライアントスクリプトに返す、クライアントスクリプトで型によるif, elseif, else文でsetValue()又はsetDisplayValue()を選択する。
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
04-12-2022 10:53 PM
ありがとうございます。
とても参考になりました。
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
04-12-2022 07:09 PM
ご指摘ありがとうございます。
以後、参考にさせて頂きます。

- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
04-13-2022 12:08 AM
例:
スクリプトインクルード
var ClientUtil = Class.create();
ClientUtil.prototype = Object.extendsObject(AbstractAjaxProcessor, {
getRecord: function() {
var tableName = 'u_a0_sample_table';
var fieldInfoDict = {};
var str = this.getParameter('sysparm_key');
var gr = new GlideRecord(tableName);
if (gr.get('u_string_field', str)) {
var fields = gr.getFields();
for (var i = 0; i < fields.size(); i++) {
var gElement = fields.get(i);
var name = gElement.getName();
var type = gElement.getED().getInternalType();
if (type == 'glide_date_time' || type == 'glide_date') {
fieldInfoDict[name] = {
'type': type,
'value': gElement.getDisplayValue()
};
} else {
fieldInfoDict[name] = {
'type': type,
'value': gElement.getValue()
};
}
}
return JSON.stringify(fieldInfoDict);
}
},
type: 'ClientUtil'
});
クライアントスクリプト
function onChange(control, oldValue, newValue, isLoading, isTemplate) {
if (isLoading || newValue === '' || oldValue == newValue) {
return;
}
var ajax = new GlideAjax('ClientUtil');
ajax.addParam('sysparm_name', 'getRecord');
ajax.addParam('sysparm_key', newValue);
ajax.getXML(function(response) {
var answer = response.responseXML.documentElement.getAttribute("answer");
var fieldInfoDict = JSON.parse(answer);
for (var name in fieldInfoDict) {
var type = fieldInfoDict[name].type;
//if (type == 'glide_date' || type == 'glide_date_time') {
g_form.setValue(name, fieldInfoDict[name].value);
//}
}
});
}
実行結果