【问题标题】:How to remove unwanted character from string in Google sheet如何从谷歌表中的字符串中删除不需要的字符
【发布时间】:2014-11-27 05:53:22
【问题描述】:

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

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

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

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("\"","");
  }

【问题讨论】:

    标签: google-apps-script google-sheets


    【解决方案1】:

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

    在您提供的代码 sn-p 中,没有进行 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);
    

    其他cmets:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-24
      • 2016-02-01
      • 2011-08-13
      • 2016-06-29
      • 2011-02-16
      • 2015-07-06
      相关资源
      最近更新 更多