You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SuiteScript 2.0技术问询:手动添加邮件行项目至交易记录Communications标签页

我之前也折腾过这个需求,NetSuite官方文档在这块确实讲得不够直白,其实核心是通过创建Message记录并关联到目标交易,NetSuite会自动把这条记录展示在交易的Communications标签页里。下面给你梳理具体的实现步骤和代码示例:

核心逻辑说明

交易的Communications标签里的邮件行,本质是独立的message类型记录,只是通过transaction字段和目标交易做了关联。所以我们不需要直接修改交易记录本身,而是创建一条Message记录并绑定到交易上即可。

具体实现步骤
  • 先确认目标交易的内部ID(比如Sales Order、Invoice的internalId)
  • 创建Message记录实例,填充必要字段:发件人、收件人、主题、内容、关联交易ID、消息类型(EMAIL)、状态等
  • 保存Message记录,完成后刷新交易页面就能看到这条邮件行
SuiteScript 2.0 代码示例

这里以用户事件脚本(AfterSubmit触发)为例,给当前提交的交易添加沟通邮件:

/**
 * @NApiVersion 2.x
 * @NScriptType UserEventScript
 */
define(['N/record', 'N/log'], function(record, log) {
    function addTransactionCommunication(context) {
        // 获取当前交易的内部ID和关联客户ID
        const transactionId = context.newRecord.id;
        const customerId = context.newRecord.getValue({ fieldId: 'entity' });

        try {
            // 初始化Message记录
            const messageRecord = record.create({
                type: record.Type.MESSAGE,
                isDynamic: false
            });

            // 设置发件人为当前登录用户(-5是NetSuite内置的当前用户标识)
            messageRecord.setValue({
                fieldId: 'author',
                value: -5
            });

            // 设置收件人为交易关联的客户(也可以直接填邮箱字符串,比如"test@example.com")
            messageRecord.setValue({
                fieldId: 'recipient',
                value: customerId
            });

            // 填充邮件主题和内容
            messageRecord.setValue({
                fieldId: 'subject',
                value: '订单跟进通知'
            });

            messageRecord.setValue({
                fieldId: 'message',
                value: '这是通过SuiteScript自动添加的交易沟通邮件,用于记录跟进情况。'
            });

            // 关联到目标交易
            messageRecord.setValue({
                fieldId: 'transaction',
                value: transactionId
            });

            // 指定消息类型为邮件
            messageRecord.setValue({
                fieldId: 'type',
                value: 'EMAIL'
            });

            // 设置邮件状态:SENT(已发送)或 DRAFT(草稿)
            messageRecord.setValue({
                fieldId: 'status',
                value: 'SENT'
            });

            // 保存记录
            const messageId = messageRecord.save({
                enableSourcing: true,
                ignoreMandatoryFields: false
            });

            log.debug('操作成功', `已成功添加沟通记录,Message内部ID:${messageId}`);
        } catch (error) {
            log.error('添加沟通记录失败', error.message);
            throw error;
        }
    }

    return {
        afterSubmit: addTransactionCommunication
    };
});
一些注意事项
  • 要确保脚本拥有message记录的创建权限,以及目标交易的查看/编辑权限
  • 如果需要给邮件加附件,可以用record.attach()方法把文件记录关联到Message上
  • recipient字段支持多种格式:客户/联系人/员工的内部ID,或者直接输入邮箱地址(多个邮箱用逗号分隔)
  • 如果你是要把已有的邮件记录关联到交易,也可以用record.attach()方法,而不是新建Message记录

内容的提问来源于stack exchange,提问作者jk121960

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 04:18:43