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

Google Sheets App Script调用toLocaleString返回M01而非月份全称问题

问题原因排查

  • toLocaleString使用default作为区域参数时,会继承Google Apps Script项目的默认区域配置,若项目区域非英语区或存在自定义规则,就可能返回M01这类非预期格式
  • Google Sheets单元格传入的日期参数可能是序列号格式,默认的new Date(date)解析逻辑和Sheets的日期序列化规则不匹配,虽然年份返回正常,但月份解析异常
  • 目标单元格的数字格式设置为自定义月份编码规则,会自动将脚本返回的正确月份文本转换为M01格式

解决方案

  • 第一步先验证单元格格式:选中对应单元格,点击顶部菜单栏「格式」→「数字」→选择「纯文本」,排除单元格自动格式化的干扰
  • 第二步修改脚本,显式指定区域为英语区,同时兼容Sheets日期序列号的解析逻辑,修改后代码如下:
function actualBudget(date) {
  // 兼容Google Sheets日期序列号解析
  const dateObj = Object.prototype.toString.call(date) === '[object Date]' 
    ? date 
    : typeof date === 'number' 
      ? new Date(Date.UTC(1899, 11, 30 + date)) 
      : new Date(date);
  // 显式指定en-US区域,确保返回英文完整月份名
  const month = dateObj.toLocaleString('en-US', { month: 'long' });
  const year = dateObj.getFullYear().toString();
  return month;
}
  • 第三步若问题仍存在,可在函数内添加console.log(month, date),执行后查看Apps Script控制台的运行日志,确认异常值是脚本返回的还是单元格转换产生的,再针对性调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 00:15:04