我正在使用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
任何帮助将不胜感激!
答案 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]);
}