SuiteScript中用record.create()创建Message记录时多收件人设置问题
问题原因与解决方案
你的错误根源是:otherrecipientslist是静态子列表,NetSuite的静态子列表不允许通过脚本执行添加/删除行的操作(比如selectNewLine或insertLine),这直接触发了你看到的报错。
正确实现思路
Message记录在NetSuite中本质是和单个实体(比如联系人)绑定的通信记录。要让多个联系人的「通信」标签下都显示这条邮件记录,你需要为每个目标联系人单独创建Message记录,并关联到同一份邮件数据:
- 首先用
email.send()发送邮件,获取返回的邮件internal ID:
var emailId = email.send({ author: 6863, recipients: 'email@stackoverflow.com,otheremail@stackoverflow.com', subject: 'Test with CC', body: '邮件内容' });
- 然后为每个需要关联的联系人创建Message记录,将
message字段设置为上面拿到的emailId,同时指定对应的收件人信息:
// 第一个联系人的Message记录 var messageRec1 = record.create({ type: record.Type.MESSAGE, isDynamic: true }); messageRec1.setValue({fieldId: 'subject', value: 'Test with CC'}); messageRec1.setValue({fieldId: 'author', value: 6863}); messageRec1.setValue({fieldId: 'authoremail', value: 'name@example.com'}); messageRec1.setValue({fieldId: 'recipient', value: 9158}); // 第一个联系人ID messageRec1.setValue({fieldId: 'recipientemail', value: 'email@stackoverflow.com'}); messageRec1.setValue({fieldId: 'message', value: emailId}); // 关联发送的邮件 messageRec1.save(); // 第二个联系人的Message记录 var messageRec2 = record.create({ type: record.Type.MESSAGE, isDynamic: true }); messageRec2.setValue({fieldId: 'subject', value: 'Test with CC'}); messageRec2.setValue({fieldId: 'author', value: 6863}); messageRec2.setValue({fieldId: 'authoremail', value: 'name@example.com'}); messageRec2.setValue({fieldId: 'recipient', value: 第二个联系人ID}); messageRec2.setValue({fieldId: 'recipientemail', value: 'otheremail@stackoverflow.com'}); messageRec2.setValue({fieldId: 'message', value: emailId}); messageRec2.save();
补充说明
otherrecipientslist子列表是NetSuite自动填充的,用于显示邮件的其他收件人信息,脚本无法手动修改这个子列表的行数据。- 通过为每个联系人创建独立但关联同一份邮件的Message记录,就能实现所有目标联系人的「通信」标签下都显示这条邮件记录的需求。
内容的提问来源于stack exchange,提问作者Derek E
相关产品推荐
相关产品推荐

