修剪而不将一些数值转换为日期值谷歌脚本



我有

var rangeValues = sheet.getDataRange().getValues();
// iterate through all cells in the selected range
for (var cellRow = 0; cellRow < maxHeight; cellRow++) {
 for (var cellColumn = 0; cellColumn < maxWidth; cellColumn++) {  
    rangeValues[cellRow][cellColumn] = rangeValues[cellRow][cellColumn].toString().trim();
 }
}

它将一些数值转换为日期值

前任:

8055-1>> Fri Jan 01 8055 00:00:00 GMT-0600 (CST)

我认为问题toString()不是trim()

有没有办法修剪以避免这个问题?

谢谢

尝试以下代码:

function trimCells(){
  var sheet = SpreadsheetApp.getActiveSheet();
  var rangeValues = sheet.getDataRange().setNumberFormat("@").getValues();
  // iterate through all cells in the selected range
  for (var cellRow = 0; cellRow < rangeValues.length; cellRow++) {
    for (var cellColumn = 0; cellColumn < rangeValues[0].length; cellColumn++) {  
      Logger.log("Before: " + rangeValues[cellRow][cellColumn])
      rangeValues[cellRow][cellColumn] = rangeValues[cellRow][cellColumn];
      Logger.log("After: " + rangeValues[cellRow][cellColumn])
    }
  }
}

setNumberFormat("@")添加到范围将使您选择的范围变为纯文本。当您之前将值添加到工作表时,它们会自动格式化为日期,因为它与模式匹配。通过此更改,您可以将其设置为范围的格式为纯文本。

另外,我根据rangeValues的长度更改了maxHeightmaxWidth,我假设这也是您获得它们的方式。此代码会将范围内的值设置为纯文本并检索它们,您甚至不需要toString()trim()(除非您实际上想要后者(。

最新更新