Google应用脚本的持续时间值错误

时间:2015-09-02 19:06:55

标签: javascript google-apps-script google-sheets

朋友们!在我的工作表中,我有一个具有持续时间格式的列。

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)成为平面文本,而不改变列本身的格式?

希望得到你的帮助,朋友们。

2 个答案:

答案 0 :(得分:0)

假设您完全控制电子表格...如果您真的只想要字符串表示' 00:20:00.000'最简单的方法是将实际电子表格中该列的格式设置为纯文本,即

  1. 选择列
  2. 格式 - >数字 - >纯文本
  3. 然后它不会被转换为日期,你应该得到你之后的原始字符串值。

    如果您无法控制(或以其他方式保证)该列格式的内容,那么您最终将不得不像杰里米在评论中所做的那样做。

答案 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();
};

这当然可以一次完成整个范围。