JavaScript 関数についてサポートが必要です。ServiceNow プラットフォームを使用しています。
要件があります:
- 電子メール クライアントを使用して送信されたときにインシデント レコードに添付ファイルを自動的に追加します (機能しますが、1 回の更新で添付ファイルをレコードに 2 回追加し、毎回すべての添付ファイルを再度追加します)。
- アクティビティ ログの変更を追跡します (これは機能しています)。 https://community.servicenow.com/thread/163398
ここのエリートページに投稿されたコードを使用しています。
問題:
- 電子メール クライアントを介して追加された 1 つの添付ファイルがレコードに 2 回追加されます
- 後で別の添付ファイルが電子メール クライアントを介して追加されると、以前のすべての添付ファイルが再度添付されます。
添付ファイルがレコードに 2 回追加されるのはなぜですか? 最新の更新で追加された添付ファイルだけを電子メール クライアントで取得するにはどうすればよいですか?
//Table: Email [sys_email]
//When: after
//Insert: true
//Update: true
//Condition: !current.instance.nil() && current.type == 'received'
//Script:
addAttachmentAudit();
function addAttachmentAudit() {
var instance = current.instance;
var targetTable = current.target_table;
var grAttachment = new GlideRecord('sys_attachment');
grAttachment.addQuery('table_sys_id',current.sys_id);
grAttachment.query();
while(grAttachment.next()){
grAttachment.table_name = targetTable;
grAttachment.table_sys_id = instance;
grAttachment.update();
var grTargetTable = new GlideRecord(targetTable);
grTargetTable.addQuery('sys_id',instance);
grTargetTable.query();
while (grTargetTable.next()) {
grTargetTable.work_notes =
"Attachment added: " + grAttachment.file_name +
" by email from " + current.sys_created_by;
grTargetTable.update();
}
}
}