在suitescript中,`getvalue()`仅返回字段的内部id(如数字),而`gettext()`可直接获取其显示名称;但需注意:`gettext()`在新建记录(尚未保存)时不可用,必须先通过`record.load()`重新加载已保存记录才能调用。
在开发邮件提醒脚本(如针对销售订单、报价单等)时,常需将关联人员字段(如 salesrep)以可读姓名而非内部ID形式展示在邮件正文中。然而,若直接对当前新建或编辑中的记录调用 currentRecord.getValue({ fieldId: 'salesrep' }),返回的仅为一个数字型内部ID(例如 12345),无法满足业务沟通需求。
正确做法是使用 record.getText() 方法——它专用于获取字段的格式化显示值(即UI中看到的姓名、部门名等)。但关键前提在于:getText() 不支持动态新建记录(isDynamic: true 且未保存)的上下文。因此,必须先确保记录已保存,并通过 record.load() 重新加载该记录实例,再调用 getText():
// ✅ 正确示例:适用于已保存记录(如用户提交后触发的userEvent脚本)
var recordId = currentRecord.id; // 获取已保存记录ID
var objRecord = record.load({
type: currentRecord.type, // 推荐使用 currentRecord.type 而非硬编码
id: recordId,
isDynamic: true
});
var repName = objRecord.getText({
fieldId: 'salesrep'
});
// 构建邮件正文
var body = "Details Below:
" +
documentNum + "
" +
"Sales Representative: " + repName;⚠️ 注意事项:
射表。总结:从ID到姓名的本质,是利用NetSuite元数据层提供的“显示值解析”能力。牢记——getValue() 拿数据,getText() 拿人话;而 getText() 的可靠执行,始终依赖于一个已持久化的、可被 load() 访问的有效记录上下文。