0

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();
        }
    } 
}
4

1 に答える 1

0

while (grTargetTable.next()) ブロックを削除することを検討しましたか? grTargetTable.next() を sys_id でクエリしているため、手動で 1 回だけ実行する必要があります。

効果があるのか​​知りたいです。申し訳ありませんが、あなたの質問に直接コメントすることはできません。まだ十分な担当者がいません。

于 2015-05-31T22:12:39.403 に答える