从可视化API查询返回的格式化日期

时间:2019-06-09 18:08:17

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

我正在使用Google可视化API查询一列中包含日期的电子表格,问题是当我使用查询返回的日期填充另一张电子表格时,它们的格式不正确。

到目前为止,我已经尝试了以下方法

  var queryResult = sheetQuery(
      "Sheet1", 
      "A1:A", 
      "select A format A 'dd/mm/yyy'"
  );
  var spreadSheet = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = spreadSheet.getSheetByName("Sheet1");
  var range = sheet.getRange(1, 2, 8, 1);
  range.clear();
  range.setValues(queryResult).setHorizontalAlignment("left");

请特别注意我在查询末尾(第4个参数)对format子句的使用。

我还尝试过如下手动设置日期单元格的格式:

sheet.getRange(1, 2, 8, 1).setNumberFormat("dd/mm/yyyy");

但是,日期根本不会像这样格式化并保持格式化: 日期(2018,8,21,9,0,0) 日期(2018,8,21,9,15,4) 日期(2018,8,21,9,30,0) 日期(2018,8,21,9,45,0) 日期(2018,8,23,10,0,19) 日期(2018,8,24,10,15,0) 日期(2018,8,24,10,30,0) 日期(2018,8,24,10,45,43)

我在此处设置了一个示例电子表格:https://docs.google.com/spreadsheets/d/160sp6T0dEvq_s5X6gGx_mH-9dj2fBf7co80On01JqWw/edit?usp=sharing

要重现此问题,请找到mainFunction脚本并运行。这是脚本的链接:https://script.google.com/d/1kRavDwa0HKSuFRk6UKram1j7UzcaSow7mwfWBolSZoHwARaVF6Ifh_iF/edit?usp=sharing

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

我通过遍历date数组解决了这个问题,并为每个日期修改了字符串,删除了日期和方括号,将字符串拆分为数组,并将数组中的一些值传递给新的date对象:

for (var j = 0; j < queryResult.length; j++) {
  var previousDate = queryResult[j][2];
  var dateArray = previousDate.substring(previousDate.indexOf('(') + 1, previousDate.indexOf(')')).split(',');
  for (var k = 0; k < dateArray.length; k++) {
    dateArray[k] = parseInt(dateArray[k]);
  }
  queryResult[j][2] = new Date(dateArray[0], dateArray[1], dateArray[2], dateArray[3], dateArray[4], dateArray[5]);
}