0

我需要有关 JavaScript 函数的帮助。我正在使用 ServiceNow 平台。

我有以下要求:

  • 使用电子邮件客户端发送时自动将附件添加到事件记录(有效,但在一次更新中将附件添加到记录中两次,并且每次都重新添加所有附件)
  • 跟踪活动日志中的更改(我有这个工作)这些链接中发布的解决方案让我很接近,但存在问题。 https://community.servicenow.com/thread/163398

我正在使用此处精英页面中发布的代码。

问题:

  • 通过电子邮件客户端添加的单个附件被添加到记录 TWICE
  • 当稍后通过电子邮件客户端添加另一个附件时,所有以前的附件都会再次重新附加

为什么附件被添加到记录中两次?如何通过电子邮件客户端仅获取在最新更新中添加的附件?

//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 进行查询,因此应该只有一个。

我很想知道这是否有任何影响。对不起,我不能直接评论你的问题,我还没有足够的代表。

于 2015-05-31T22:12:39.403 回答