Google Apps Script自定义日期格式问题:转为02/11/2022格式
解决Google Apps Script日期格式转换为
02/11/2022的问题 你遇到的getDisplayValue()无效的原因是:getValues()返回的是单元格的原始数据(日期类型对应JavaScript的Date对象),而getDisplayValue()是Range对象的方法,不能直接调用在getValues()返回的元素上。
下面提供两种可靠的解决方法:
方法一:使用内置的Utilities.formatDate()(推荐)
Google Apps Script提供了专门的日期格式化工具,简洁且不易出错:
// 替换原代码中设置emailTemp.ts的行 emailTemp.ts = Utilities.formatDate(row[timestamp], Session.getScriptTimeZone(), "MM/dd/yyyy");
Session.getScriptTimeZone()会使用当前脚本的时区,如果你需要指定固定时区(比如丹麦时区),可以替换为"Europe/Copenhagen"- 格式字符串
"MM/dd/yyyy"对应两位月份/两位日期/四位年份,正好符合你需要的02/11/2022格式
方法二:手动拼接日期组件(灵活定制)
如果需要更个性化的格式,可以手动提取日期的年、月、日并补零:
- 先添加一个补零的辅助函数(放在
SendEmail函数外面或者内部都可以):
function padZero(num) { return num.toString().padStart(2, '0'); }
- 然后修改日期格式化的代码:
const date = row[timestamp]; // 月份从0开始,所以要+1 emailTemp.ts = `${padZero(date.getMonth() + 1)}/${padZero(date.getDate())}/${date.getFullYear()}`;
修改后的代码片段示例
替换原代码中emailTemp.ts = row[timestamp].toLocaleString("da-DK")这一行,比如用方法一的话,修改后:
data.forEach(function (row) { // 替换原来的日期格式化行 emailTemp.ts = Utilities.formatDate(row[timestamp], Session.getScriptTimeZone(), "MM/dd/yyyy"); // 其余代码保持不变... emailTemp.po = row[poid]; emailTemp.co = row[contact]; // ... });
内容的提问来源于stack exchange,提问作者The Denster
相关产品推荐
相关产品推荐

