JournalEntry フィールドの操作
16033 ワード
スクリプトで JournalEntry フィールドを操作する必要がある場合があります.プラットフォームが提供するOOTB
OOTB メソッドは、必要に応じて機能を拡張するために使用できます.エントリの配列、json 形式、またはある種の html を取得する必要が生じたとします. OOTB メソッド呼び出しをカプセル化し、API を公開することで、次のことが可能になります.
テスト GlideRecords
テストケース
各出力のフォーマットは、次のようなユーティリティで調整できます.
メソッド「field」は、GR のどのフィールドからエントリ値を取得するかを指定します.
メソッド「toHTML」、「toJSON」、「toArray」、および「toString」は、取得するエントリ数を指定する整数値を指定してジャーナル フィールド エントリを返すターミナル メソッドです. -1 はすべて、正の整数は日付の降順で特定の数のエントリを取得します.
ハッピースノーイング...
//GlideRecord.<fieldName>.getJournalEntry(<numberOfEntries2Fetch>)
var gr = new GlideRecord('incident');
gr.get('<sys_id');
gr.comments.getJournalEntry(-1) //get all comments
OOTB メソッドは、必要に応じて機能を拡張するために使用できます.エントリの配列、json 形式、またはある種の html を取得する必要が生じたとします. OOTB メソッド呼び出しをカプセル化し、API を公開することで、次のことが可能になります.
テスト GlideRecords
var dml = new GlideRecord('dsl');
dml.get('31a60f4bdb2a70109c9268d35b96196e');
var incident = new GlideRecord('incident');
incident.get('57af7aec73d423002728660c4cf6a71c');
テストケース
gs.debug(JSON.stringify(JournalEntry(dml)
.field('notes')
.toJSON(1)));
/* get the latest entry in JSON format from journal field 'notes' in record GlideRecord<dsl>
-> {"2021-09-16 21:18:43 - System Administrator":"\nnoted"}
*/
gs.debug(JournalEntry(incident)
.field('work_notes')
.toHTML(-1));
/* get all of the entries in "HTML" format from journal field 'work_notes' in record incident
-> "<div>2021-09-16 21:13:03 - System Administrator (Work notes)<br />worked notes<br /><br />2018-12-12 23:30:24 - System Administrator (Work notes)<br />Changed the priority of the Incident<br /><br /></div>"
*/
gs.debug(JournalEntry(incident)
.field('comments')
.toArray(2));
/* get latest 2 entries as an array from journal field 'comments' in record incident
-> ["2021-09-16 19:18:52 - System Administrator (Additional comments)\nthis is another comment\r\n\r\n\r\nand another","2021-09-16 12:24:57 - System Administrator (Additional comments)\nBecause we need them",""]
*/
gs.debug(JournalEntry(dml)
.field('notes')
.toString(-1));
/* get all entries as a string from journal field 'notes' from GlidRecord<dsl>. Same as OOTB
-> "2021-09-16 21:18:43 - System Administrator (Notes)\nnoted\n\n"
*/
各出力のフォーマットは、次のようなユーティリティで調整できます.
var JournalEntry = function JournalEntry (gr) {
var data = {
"gr": gr,
"fieldName": null,
"count": -1
};
return {
"field": setFieldName,
"toHTML": toHtml,
"toJSON": fromArrayToJSON,
"toString": toString,
"toArray": toArray
};
/*************************** public members ***********************/
function toString (count) {
return _journalFieldEntries(data, count);
}
function toArray (count) {
var ootbEntryDelimiter = '\n\n';
return _journalFieldEntries(data, count)
.split(ootbEntryDelimiter);
}
function toHtml (count) {
var anyReturnOrNewLine = /\n|\r/g;
var brTag = '<br />';
var entries = _journalFieldEntries(data, count)
.replace(anyReturnOrNewLine, brTag);
return _betweenDivTag(entries);
}
function fromArrayToJSON (count) {
return toArray(count)
.reduce(_toKeyPair(_keyRegex(data.gr)), {});
}
function setFieldName (x) {
data.fieldName = x;
return this;
}
/*************************** private members ***********************/
function _journalFieldEntries (data, count) {
var x = count || data.count;
return data.gr[data.fieldName]
.getJournalEntry(x);
}
function _keyRegex (gr) {
var fieldLabel = gr.getElement(data.fieldName)
.getLabel();
return new RegExp('\\(' + fieldLabel + '\\)', 'i');
}
function _toKeyPair (splitPattern) {
return function applyToKeyPair (reducer, element) {
var pair = element.split(splitPattern);
var key = pair[0].trim();
reducer[key] = pair[1];
return reducer;
};
}
function _betweenDivTag (value) {
return "<div>" + value + "</div>";
}
};
メソッド「field」は、GR のどのフィールドからエントリ値を取得するかを指定します.
メソッド「toHTML」、「toJSON」、「toArray」、および「toString」は、取得するエントリ数を指定する整数値を指定してジャーナル フィールド エントリを返すターミナル メソッドです. -1 はすべて、正の整数は日付の降順で特定の数のエントリを取得します.
ハッピースノーイング...
Reference
この問題について(JournalEntry フィールドの操作), 我々は、より多くの情報をここで見つけました https://dev.to/jibarican/working-with-journalentry-fields-3leiテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol