Trim 不将某些数值转换为日期值 Google 脚本

Trim without turning some numerical values into date values Google script

我有

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()

有没有办法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("@")添加到范围将使您选择的范围成为纯文本。当您之前将值添加到 sheet 时,它们会自动格式化为日期,因为它与模式匹配。通过此更改,您可以将范围的格式设置为纯文本。

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