SuiteScript中如何通过单次Record.save()高效保存多条记录
SuiteScript批量保存销售订单的高效方案
问题直接解答
- 没错,保存20条销售订单默认情况下确实得调用20次
Record.save(),每次调用都会消耗对应单元,20次的消耗是单次的20倍,会造成不必要的单元浪费。 Record.save()本身不支持单次调用保存多条记录,但NetSuite提供了专门的批量操作方案,能大幅降低单元消耗。
高效解决方案
1. 用Bulk Record API(N/bulkRecord模块)
这个模块就是为批量创建/更新记录设计的,一次API调用就能处理多条记录,单元消耗远低于多次单条保存。示例代码:
/** * @NApiVersion 2.x * @NScriptType ScheduledScript */ define(['N/bulkRecord'], function(bulkRecord) { function execute(context) { // 构造20条销售订单的数据集 var salesOrderList = []; for(let i = 0; i < 20; i++){ salesOrderList.push({ entity: 123, // 替换为实际客户ID item: [{ item: 456, // 替换为实际商品ID quantity: 1 }], // 补充其他必填字段,比如trandate等 }); } // 提交批量创建任务 var bulkCreateTask = bulkRecord.create({ type: bulkRecord.Type.SALES_ORDER, records: salesOrderList }); var taskId = bulkCreateTask.submit(); // 可通过N/task模块查询任务执行状态 } return {execute: execute}; });
- 优势:单批次处理多条记录,单元消耗仅为单次调用的量级,比20次单条保存省很多;
- 注意:要确保每条记录的必填字段都填对,这个API是异步执行的,适合非实时场景。
2. SuiteScript自动化CSV导入(N/file + N/import模块)
如果后续可能处理更大数据量,这种方式更合适,先生成CSV文件再触发导入任务,单元消耗极低。示例代码框架:
/** * @NApiVersion 2.x * @NScriptType ScheduledScript */ define(['N/file', 'N/import'], function(file, nsImport) { function execute(context) { // 生成CSV内容,第一行是字段名,后续是数据 let csvContent = "entity,item,quantity,trandate\n"; for(let i = 0; i < 20; i++){ csvContent += `123,456,1,${new Date().toISOString().split('T')[0]}\n`; } // 创建并保存CSV文件到指定文件夹 let csvFile = file.create({ name: 'Bulk_SalesOrders.csv', fileType: file.Type.CSV, contents: csvContent }); csvFile.folder = 789; // 替换为实际文件夹ID let fileId = csvFile.save(); // 触发导入任务(需先在UI创建好销售订单的导入映射) let importTask = nsImport.create({ type: nsImport.Type.SALES_ORDER, mappingId: 'custom_sales_order_import_map', // 替换为实际导入映射ID fileId: fileId }); let taskId = importTask.submit(); } return {execute: execute}; });
- 优势:适合超大量数据导入,单元消耗极低;可以复用UI配置的导入映射,减少代码里的字段逻辑;
- 注意:必须先在NetSuite UI里创建并保存对应的销售订单导入映射,同样是异步执行。
3. 实时场景补充:submitFields批量更新(仅适用于已有记录)
如果是批量更新已有销售订单,N/record的submitFields可以批量处理,但创建新记录还是优先用前两种方法。
总结
- 20条销售订单用
Record.save()确实要调用20次,单元消耗高; - 优先选Bulk Record API,兼顾效率和成本;如果是未来可能处理更大数据量,CSV导入自动化更合适。
内容的提问来源于stack exchange,提问作者RogerYueh
相关产品推荐
相关产品推荐

