Google Apps Script表格时间格式转换异常,需保留24小时制显示求助
解决Google Sheets时间提取后格式丢失问题
我有一份员工打卡信息的电子表格,其中某列时间以24小时制显示(比如"22:00")。但把该列数据提取为数组时,日志里显示的是"Sat Dec 30 22:00:00 GMT-08:00 1899",粘贴到其他表格后只显示"12/30/1899"。
我尝试用map方法重组数据并格式化单元格时间,但没成功,希望能保留原表格里"22:00"这样的显示样式。当前代码如下:
const formatTime = function (time) { return Utilities.formatDate(time, "GMT+2", "HH:mm"); } const correctOrder = filemakerData.map(function(r){ return [ r[3], // Employee Name r[0], // Date r[1], // Building r[2], // SOR Number formatTime(r[4]), // Start Time formatTime(r[5]) // End Time ] });
问题原因与解决方案
问题主要出在时区不匹配和表格自动格式识别两点:
- 代码里硬编码了
GMT+2时区,但原时间的时区是GMT-08:00,时区偏差会导致格式化结果异常。 - 即使格式化出正确的"HH:mm"字符串,写入表格时可能被自动识别为日期类型,从而显示为1899年的日期。
修改方案一:匹配时区+强制文本格式写入
const formatTime = function (time) { // 获取脚本/表格的默认时区,避免硬编码偏差 const timeZone = Session.getScriptTimeZone(); return Utilities.formatDate(time, timeZone, "HH:mm"); } const correctOrder = filemakerData.map(function(r){ return [ r[3], // Employee Name r[0], // Date r[1], // Building r[2], // SOR Number formatTime(r[4]), // Start Time formatTime(r[5]) // End Time ] }); // 写入目标表格时,先设置单元格为文本格式 const targetSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("你的目标工作表名"); if (targetSheet) { const range = targetSheet.getRange(1, 1, correctOrder.length, correctOrder[0].length); range.setNumberFormat("@") // 强制文本格式 .setValues(correctOrder); }
修改方案二:给时间字符串加前缀强制文本识别
如果不想全局设置单元格格式,可以在格式化后的时间前加单引号(表格会自动隐藏单引号,只显示时间):
const formatTime = function (time) { const timeZone = Session.getScriptTimeZone(); // 加单引号前缀,让表格将内容识别为纯文本 return "'" + Utilities.formatDate(time, timeZone, "HH:mm"); } const correctOrder = filemakerData.map(function(r){ return [ r[3], // Employee Name r[0], // Date r[1], // Building r[2], // SOR Number formatTime(r[4]), // Start Time formatTime(r[5]) // End Time ] }); // 直接写入即可,无需额外设置格式 const targetSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("你的目标工作表名"); if (targetSheet) { targetSheet.getRange(1, 1, correctOrder.length, correctOrder[0].length).setValues(correctOrder); }
内容的提问来源于stack exchange,提问作者Borgher
相关产品推荐
相关产品推荐

