如何从Google表格中的字符串中删除不需要的字符

时间:2014-10-02 08:59:15

标签: google-apps-script google-sheets

我正在尝试清理一些从csv文件导入的数据。我想出了如何获取我需要的一些列的格式,但我正在努力处理每行两端的双引号。我假设由getDataAsString()函数添加了引号。

从下面我可以看到,我正在尝试使用replace()来删除最后一列中值的双引号。记录器显示没有"的数据,但我使用的行对工作表中的数据没有任何影响。我怀疑这是因为我到目前为止所做的所有脚本都在说“向我显示最后一列没有引用的值”,但实际上没有更新数据。

如何将“show”行转换为实际的更改数据行?

function importFromCSV() {
  var file = DriveApp.getFileById(listLatestFile());
  //var csvFile = file.getBlob().getDataAsString();// get string content
  var csvFile = file.getAs('text/plain').getDataAsString();
  //Logger.log(csvFile);// check in the logger
  var csvData = CSVToArray_(csvFile);// convert to 2D array
      var ss = SpreadsheetApp.getActiveSpreadsheet();
      var sheet = ss.getSheetByName("ImpCSVData");
      sheet.clear();
      sheet.getRange(1,1, csvData.length, csvData[0].length).setValues(csvData);// write to sheet in one single step
      var test = sheet.getRange(1,csvData[0].length, csvData.length, 1).getValue().replace("\"","");
      Logger.log(test);
      sheet.getRange(1,4, csvData.length, 2).setNumberFormat("DD/MM/YYYY");
      sheet.getRange(1,6, csvData.length, 1).setNumberFormat("@STRING@");
      sheet.getRange(1,csvData[0].length, csvData.length, 1).getValue().replace("\"","");
  }

1 个答案:

答案 0 :(得分:3)

  

...我使用过的行对表格中的数据没有任何影响

在您提供的代码段中,没有setValue()setValues()来电。没有它,您不会对电子表格的内容进行任何更改。假设您有一个要写入工作表的变量text。你应该这样做:

  sheet.getRange(1,csvData[0].length, csvData.length, 1).setValue(text);

.getValue()方法返回给定范围内的对象 - 您的代码假定这是一个字符串。如果它不是一个字符串(比如说它是一个日期或数字),那么.replace()将抛出异常。即使它是一个字符串,这一行也不会有用,因为你不能以任何方式存储结果:

  sheet.getRange(1,csvData[0].length, csvData.length, 1).getValue().replace("\"","");

尝试:

  var lastCellRange = sheet.getRange(1,csvData[0].length, csvData.length, 1);
  var text = lastCellRange.getValue().replace("\"","");
  lastCellRange.setValue(text);

其他评论:

  • 您的replace()语句将更改双引号字符的第一个匹配项,无论它出现在何处。您想要替换可能存在或不存在的前导引号或尾随引号,请尝试相反(来自this answer):

    var text = lastCellRange.getValue().replace(/^"?(.+?)"?$/,'$1');