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

如何在Apps Script中编写函数获取指定日期区间内所有日期

Apps Script 日期区间数组生成自定义函数

实现代码

/**
 * 返回两个日期划定区间内的所有日期数组
 * @param {Date|string} date1 区间边界日期1
 * @param {Date|string} date2 区间边界日期2
 * @return {Date[]} 区间内所有日期构成的数组
 * @customfunction
 */
function GET_DATE_RANGE(date1, date2) {
  // 统一转换输入为Date对象,兼容表格日期、日期字符串、时间戳等输入格式
  const d1 = new Date(date1);
  const d2 = new Date(date2);

  // 自动识别实际起止日期,兼容两个参数顺序传反的场景
  const start = d1 < d2 ? d1 : d2;
  const end = d1 < d2 ? d2 : d1;

  const result = [];
  // 重置时分秒为0,规避时区、时间分量导致的日期偏移问题
  let cur = new Date(start.getFullYear(), start.getMonth(), start.getDate());
  const stopMark = new Date(end.getFullYear(), end.getMonth(), end.getDate());

  while (cur <= stopMark) {
    result.push(new Date(cur));
    cur.setDate(cur.getDate() + 1);
  }

  return result;
}

使用注意事项

  • 部署方式:打开对应Google Sheets文档,点击顶部「扩展程序」-「Apps Script」进入脚本编辑器,粘贴上述代码后保存,完成授权即可在表格内调用。
  • 调用方式:直接在单元格输入公式=GET_DATE_RANGE(日期1, 日期2)即可,需要将返回的日期数组自动填充到连续单元格时,套一层ARRAYFORMULA使用即可,示例:=ARRAYFORMULA(GET_DATE_RANGE(A2,B2))。
  • 容错处理:函数自动校正两个日期的先后顺序,无需手动判断哪个是起始/结束日期;自动过滤时分秒分量的干扰,不会出现少算、多算日期的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 12:15:43