- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- 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 06:35 PM
.getValue()はUTCで取得し.getDisplayValue()はユーザの日付設定に基づいて取得します。
具体的に「この場合、その他の変数が取得できなくなります」とはどの変数でしょうか?
質問に具体的に何を期待しているのに何になるの記述があると分かりやすくなります。
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
04-12-2022 07:08 PM
ご返答ありがとうございます。
具体例がなく申し訳ございません。
上の画像での例なのですが、一番上の変数でレコードを参照してsys_idをクライアントスクリプトへ渡し、レコードの内容を取得しています。
getDisplayValue()に変更すると、上の画像のように「日付/時刻」しか反映されません。
「日付/時刻」の欄をユーザーの時刻設定に基づいて取得しつつ、他の変数も反映させるにはどうすれば良いでしょうか。

- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
04-12-2022 07:15 PM
「申請者」、「場所」、「端末」が反映されないと言うことでしょうか?画面から選択ボックスのように見えます。
日付をgetDisplayValue()で取得しないと設定されるのでしょうか?それとも質問は選択ボックスをどのように設定するかでしょうか?
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
04-12-2022 07:39 PM
そうです。「申請者」、「場所」、「端末」が反映されません。
「申請者」、「場所」、「端末」は.getDisplayValue()でなく.getValue()ですと自動で入力されます。
ですがその場合「日付/時刻」の欄がUTC時刻で入力されてしまいます。
なのでスクリプトをどのように書き直せば、「日付/時刻」の欄をユーザーの時刻設定に基づいて取得しつつ、その他の変数も反映させられるかということです。伝わりにくく申し訳ございません。