朋友们!在我的工作表中,我有一个具有持续时间格式的列。
http://dl1.joxi.net/drive/0007/2131/485459/150902/fc427ebb50.jpg
我正在尝试使用此函数获取此列的值:
function getSheetValues(startRow, startCmn, maxColumn) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var mainSheet = ss.getSheets()[0];
var range = mainSheet.getRange(startRow, startCmn, mainSheet.getMaxRows(), maxColumn);
return range.getValues();
}
var mainSheetData = getSheetByNameValues(2, 1, 9);
var test = mainSheetData[2][6];
Logger.log(test);
结果我得到了错误的价值观。示例:对于第三行(00:23:00.000)我得到这个:周六12月30日02:13:47 GMT + 05:53 1899.可能是由于日期自动格式化。我怎么能避免这个?有没有办法让价值(00:23:00.000)成为平面文本,而不改变列本身的格式?
希望得到你的帮助,朋友们。
答案 0 :(得分:0)
假设您完全控制电子表格...如果您真的只想要字符串表示' 00:20:00.000'最简单的方法是将实际电子表格中该列的格式设置为纯文本,即
然后它不会被转换为日期,你应该得到你之后的原始字符串值。
如果您无法控制(或以其他方式保证)该列格式的内容,那么您最终将不得不像杰里米在评论中所做的那样做。
答案 1 :(得分:0)
您也可以以编程方式完成所有操作,将范围复制到另一个单元格,将numberFormat设置为文本,然后删除此复制的范围(或保留):
function go(){
var ss = SpreadsheetApp.getActiveSheet(), rang1 = ss.getRange('A11'), rang2 = ss.getRange('A12');
rang1.copyTo(rang2);
Logger.log(rang2.setNumberFormat('@STRING@').getValue());
rang2.clear();
};
这当然可以一次完成整个范围。