如何通过Google Apps Script保留谷歌表格日期时间格式至邮件HTML表格
问题:谷歌表格日期时间格式在邮件中丢失
使用Google Apps Script从表格提取数据生成HTML邮件时,表格中原本显示为7/22/2022、9:00:00 AM的日期时间,提取后在邮件中变成了带时区的完整字符串(如Fri Jul 22 2022 00:00:00 GMT-0500),日志中显示为ISO格式时间戳,需要修正为原表格的显示格式。
解决方案
核心是在getData函数中,对提取到的日期时间对象进行格式化处理,使用Utilities.formatDate方法将其转换为目标格式:
修改getData函数中的日期时间处理逻辑
将原代码中直接赋值日期时间的部分,替换为格式化后的字符串:
function getData() { var values = SpreadsheetApp.getActive().getSheetByName("Settings").getRange("B2:H45").getValues(); values.shift(); //remove headers var appearances = []; // 获取脚本时区,也可替换为具体时区如"America/New_York" var timeZone = Session.getScriptTimeZone(); values.forEach(function(value) { var appearance = {}; appearance.client = value[0]; appearance.court = value[1]; // 格式化日期为MM/dd/yyyy格式,空值处理避免报错 appearance.date = value[2] ? Utilities.formatDate(value[2], timeZone, "MM/dd/yyyy") : ""; // 格式化时间为h:mm:ss a格式(如9:00:00 AM),空值处理 appearance.time = value[3] ? Utilities.formatDate(value[3], timeZone, "h:mm:ss a") : ""; appearance.charges = value[4]; appearance.notes = value[5]; appearance.phone = value[6]; appearances.push(appearance); }) Logger.log(JSON.stringify(appearances)); return appearances; }
说明
Utilities.formatDate接收三个参数:要格式化的Date对象、时区、格式字符串- 格式字符串可根据需求调整:
- 日期格式
MM/dd/yyyy对应7/22/2022,若需dd/MM/yyyy可直接修改 - 时间格式
h:mm:ss a对应9:00:00 AM,若需24小时制可改为HH:mm:ss
- 日期格式
- 时区默认使用脚本的时区,若需固定时区,可将
Session.getScriptTimeZone()替换为具体时区标识符(如"Asia/Shanghai")
内容的提问来源于stack exchange,提问作者jon_win
相关产品推荐
相关产品推荐

