You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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格式

方法二:手动拼接日期组件(灵活定制)

如果需要更个性化的格式,可以手动提取日期的年、月、日并补零:

  1. 先添加一个补零的辅助函数(放在SendEmail函数外面或者内部都可以):
function padZero(num) {
  return num.toString().padStart(2, '0');
}
  1. 然后修改日期格式化的代码:
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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 06:35:19