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

Google脚本中getMonth()函数已弃用,求替代方案修复失效脚本

解决方案

首先澄清:JavaScript原生Date对象的getMonth()方法并没有被弃用,你碰到的问题大概率是从表格获取的firstDay不再是标准Date类型(比如返回了字符串或其他非日期类型),或是Google Apps Script在特定场景下的类型转换异常。下面给几种靠谱的替代方案,完全不用重写整个日期处理逻辑:

方案1:用Google Apps Script内置的Utilities.formatDate(首推)

这个方法能直接把Date对象转成指定格式的字符串,还自动处理时区问题,比手动拼接靠谱得多:

firstDay = sheet.getRange(rowCount, 2).getValue();
// 先确保是Date类型,不是的话强制转换
if (!(firstDay instanceof Date)) {
  firstDay = new Date(firstDay);
}
// 格式化为dd/mm/yyyy,时区换成你表格所在的时区,比如"Asia/Shanghai"
firstDay = Utilities.formatDate(firstDay, "Asia/Shanghai", "dd/MM/yyyy");

方案2:继续用Date原生方法(先解决类型问题)

如果偏好手动拼接,先确保拿到的是标准Date对象,再调用方法,顺便补零保证格式统一:

firstDay = sheet.getRange(rowCount, 2).getValue();
// 强制转成Date对象,避免类型错误
firstDay = new Date(firstDay);
const month = String(firstDay.getMonth() + 1).padStart(2, '0'); // 单月补零成两位
const date = String(firstDay.getDate()).padStart(2, '0');
const year = firstDay.getFullYear();
firstDay = `${month}/${date}/${year}`;

之前的代码如果是1月会输出"1/5/2024",现在会变成"01/05/2024",格式更规范。

方案3:直接在表格里处理格式

你也可以提前把目标列的单元格格式设为dd/mm/yyyy,然后用getDisplayValue()直接拿格式化好的字符串,省得脚本里处理:

firstDay = sheet.getRange(rowCount, 2).getDisplayValue();

排查小技巧

  • 检查表格对应单元格的格式,别混进文本类型的日期
  • 在脚本里加个日志看看拿到的是什么:console.log(typeof firstDay, firstDay);,确认下类型和值是否正常

内容的提问来源于stack exchange,提问作者proball

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 15:35:12