我有
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 >> 星期五 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("@")
添加到范围将使您选择的范围变成纯文本。当您之前将值添加到工作表时,它们会自动格式化为日期,因为它与模式匹配。通过此更改,您可以将范围的格式设置为纯文本。
此外,我根据 rangeValues
的长度更改了 maxHeight
和 maxWidth
我假设这也是您获得它们的方式。此代码会将范围内的值设置为纯文本并检索它们,您甚至不需要 toString()
或 trim()
(除非您确实想要后者)。
关于javascript - trim 而不将某些数值转换为日期值Google脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57185638/