使用.getValues检索时,Google表格正在更改单元格值的格式

时间:2017-02-14 08:48:06

标签: javascript google-sheets

在谷歌表上我有这个值

Id  Date         In      Out
8   12/9/2016    22:00   22:00
50  12/5/2016    07:40   17:32
50  12/6/2016    07:41   17:42
50  12/7/2016    07:20   17:40
50  12/8/2016    07:22   20:56
50  12/9/2016    07:35   18:11
50  12/10/2016   07:31   07:31
50  12/11/2016   04:27   04:27
50  12/12/2016   07:52   18:02

当我将值检索到Google网站时,它会将Time In和Time Out转换为类似

的内容
2016-12-09  Sat Dec 30 1899 21:54:38 GMT+0800 (HKT) Sat Dec 30 1899 21:54:38 GMT+0800 (HKT)

它将时间从 07:40 转换为 1899年12月30日星期六07:40:39 GMT + 0800 (HKT)

如何将其恢复到07:40或7:40 AM?

这是我获取值的方式:

var sheetToView = ss.getSheetByName("TempManila");
var rangeToView = sheetToView.getDataRange();
var values = rangeToView.getValues();
values.shift();

var temp = new Array();
for(var i=0;i<values.length;i++){
  temp.push([
    values[i][0].toString(),
    values[i][1].toString(),
    values[i][2].toString(),
    values[i][3].toString(),
    values[i][4].toString(),
    values[i][5].toString(),
    values[i][6].toString(),
    values[i][7].toString(),
    values[i][8].toString(),
    values[i][9].toString(),
  ]);

非常感谢。

2 个答案:

答案 0 :(得分:1)

将.getValues()更改为。getDisplayValues()可能有所帮助。 从文档:它......

  

返回此范围的矩形网格值。返回显示值的二维数组,按行索引,然后按列索引。值的类型为String。显示的值会考虑日期,时间和货币格式,包括电子表格的区域设置自动应用的格式。

答案 1 :(得分:0)

您可以使用“setNumberFormat('@')”在不更改格式的情况下获取数据。 https://developers.google.com/apps-script/reference/spreadsheet/range#setnumberformatnumberformat

请从

更改
var rangeToView = sheetToView.getDataRange();

var rangeToView = sheetToView.getDataRange().setNumberFormat('@');

如果不起作用,请随时告诉我。