重置文件柜中 CSV 文件的内容

Reset the content of a CSV file in the file cabinet

我正在读取文件柜中 CSV 文件的内容,用户 Event Suitelet 以销售订单为生,并尝试在完成后将文件内容重置为空 CSV

我可以成功追加行并阅读内容,但无法重置 NetSuite 文档中的内容。 我只是在寻找一种将文件重置为空 CSV 的方法。

/**
 *
  @NApiVersion 2.x
  @NModuleScope SameAccount
  @NScriptType UserEventScript
  @appliedtorecord salesorder
 */

define(['N/file'], function(file) {
  function resetCSVFile(context) {
    var fileObj = file.load({ id: '104819' });

    var iterator = fileObj.lines.iterator();
    var idArrays = [];

    iterator.each(function(line) {
      idArrays.push(line.value);
      // the line below is my failed attempt at resetting the line
      line.value = ''
      return true;
    });

    log.audit({ title: 'idArrays', details: idArrays });

    fileObj.save();
    return true;
  }

  return {
    afterSubmit: resetCSVFile
  };
});

完成文件处理后,您需要使用 file.create() 创建一个新文件 object,其中 namefileType、和 folder 属性 值。将该文件 object 的 contents 属性 设置为某个内容(可能是 header 行),然后保存。这将用空文件覆盖现有文件,但保持与原始文件相同的内部 ID

这是一个示例,它捕获 CSV 文件的 header 行并创建一个包含该 header 行的空文件。创建文件 object 时,内容 属性 不能为 null 或空字符串。

var fileObj = file.load({ id: '5447' });
var currentLine = 0;
var headerRow = '';
fileObj.lines.iterator().each(function(line) {
  currentLine++;
  if (currentLine === 1) {
    headerRow = line.value + '\n';
  }
  log.debug({ title: 'header', details: line.value });
  return true;
});

var newFile = file.create({
  name: fileObj.name,
  fileType: file.Type.CSV,
  folder: fileObj.folder,
  contents: headerRow
});

newFile.save();