Google脚本问题:时间卡更正申请中时间格式显示异常求助
解决Google Apps Script中审批邮件的时间格式问题
我完全懂你现在的头疼——把休假申请的自动化工具改成时间卡更正应用后,明明表单里设置了「更正后时间」的问题,结果经理收到的审批邮件里,这个字段还是显示成完整的日期格式,不是你想要的纯时间。别慌,咱们一步步来搞定这个问题:
第一步:找到脚本里生成邮件内容的部分
首先打开你的Google Apps Script编辑器,找负责构建审批邮件的代码块。通常这部分会有这些特征:
- 包含
MailApp.sendEmail()或者GmailApp.sendEmail()方法 - 会从表单响应或者关联的Google Sheets里读取「更正后时间」这个字段
- 把字段内容拼接进邮件正文的字符串里
你可以直接搜索「更正后时间」(或者对应的字段英文名,如果是英文表单的话),或者找那些拼接邮件内容的代码段,很快就能定位到。
第二步:给时间字段加上格式化逻辑
找到读取「更正后时间」的代码后,你需要把这个日期对象转换成纯时间格式。这里有两种实用的方法:
方法1:快速生成本地化时间
用toLocaleTimeString()就能根据你的时区生成友好的时间格式,代码示例:
// 假设你从表单响应里拿到的时间字段是correctionTime(是个Date对象) const formattedTime = correctionTime.toLocaleTimeString(); // 然后把原来邮件里的correctionTime替换成formattedTime就行
比如原来的邮件正文代码如果是...更正后时间:${correctionTime}...,改成...更正后时间:${formattedTime}...就好。
方法2:自定义时间格式(更灵活)
如果你需要指定格式,比如24小时制、带/不带秒数,就用Utilities.formatDate():
// 先获取脚本的时区,或者手动指定比如"Asia/Shanghai" const timeZone = Session.getScriptTimeZone(); // 自定义格式:HH是24小时制,mm是分钟,ss是秒;如果要12小时制就用"h:mm a" const formattedTime = Utilities.formatDate(correctionTime, timeZone, "HH:mm:ss");
把这个格式化后的formattedTime替换到邮件正文里对应的位置就行。
额外排查:检查Google Sheets的列格式
如果脚本改完还是没效果,去看看关联的Google Sheets里「更正后时间」列的格式:选中列,右键选「格式」>「数字」>「时间」,确保列本身设置成了时间格式,这样脚本读取的时候能更准确识别为时间类型。
内容的提问来源于stack exchange,提问作者Joshua Wilkinson
相关产品推荐
相关产品推荐

