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

将日期对象传入Google Apps Script函数时返回值异常求助

Google Sheets自定义函数接收日期返回年中天数的问题

问题原因

这是因为Google Sheets自定义函数接收的参数是单元格当前显示的格式化后的值,而非单元格存储的原始日期数据。如果你的A1单元格格式被设置为"一年中的第几天"(格式代码为D),传递给Apps Script的就只是该日期在当年的天数,而非完整的日期对象或原始序列号。而DATEVALUE()函数会直接读取单元格存储的原始日期序列号,不受显示格式影响,所以能返回正确的30682(对应1984年1月1日的Sheets日期序列号)。

解决办法

方法1:修改单元格格式为标准日期格式

选中A1单元格,设置格式为标准日期样式(比如MMM dd, yyyy),此时自定义函数会接收到完整的Date对象,直接返回即可得到正确结果:

function xxx(d) {
  return d; // 此时d是Date对象,返回后Sheets会自动按格式显示
}

方法2:在函数中获取单元格原始值(保留显示格式)

如果需要保留单元格的显示格式,可通过单元格地址直接读取原始存储值:

function getOriginalDate(cellAddress) {
  const sheet = SpreadsheetApp.getActiveSheet();
  const cell = sheet.getRange(cellAddress);
  return cell.getValue();
}

调用时使用=getOriginalDate("A1"),即可获取单元格存储的原始日期数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.11 22:12:04