如何在Google Sheets中使用JS自定义函数统计两日期之间的周四数量
实现步骤
- 打开你的Google表格,点击顶部菜单栏的「扩展程序」>「Apps脚本」,进入脚本编辑器
- 删除编辑器中默认生成的空白代码,粘贴下方的自定义函数代码:
/** * 计算两个日期范围内的周四总天数 * @param {Date} startDate 开始日期 * @param {Date} endDate 结束日期 * @return {Number} 周四的总天数 * @customfunction */ function COUNT_THURSDAYS(startDate, endDate) { // 适配批量选中整列计算的场景 if (Array.isArray(startDate)) { return startDate.map((row, index) => { const s = row[0], e = endDate[index][0]; // 空行返回空值 if (!s || !e) return ''; return calculateThursdays(s, e); }) } // 单行计算场景 return calculateThursdays(startDate, endDate); } // 复用你原有的计算逻辑 function calculateThursdays(d0, d1) { const THURSDAY_CODE = 3; // 开始日期晚于结束日期直接返回0 if (d0.getTime() > d1.getTime()) return 0; const ndays = 1 + Math.round((d1 - d0) / (24 * 3600 * 1000)); return Math.floor((ndays + (d0.getDay() + 6 - THURSDAY_CODE) % 7) / 7); }
- 点击编辑器顶部的保存按钮,为项目任意命名,首次使用需要按照提示完成脚本授权(遇到安全提示时选择「高级」>「继续访问」即可,脚本为你自己编写无安全风险)
- 回到Google表格即可直接调用函数:
- 逐行计算:如果A列存储开始日期、B列存储结束日期,在目标单元格输入
=COUNT_THURSDAYS(A2, B2),下拉填充即可批量得到所有行的结果 - 自动批量计算:无需下拉,直接在首行目标单元格输入
=COUNT_THURSDAYS(A2:A, B2:B),函数会自动为所有有有效日期的行返回计算结果
- 逐行计算:如果A列存储开始日期、B列存储结束日期,在目标单元格输入
注意事项
- 请确保存储开始、结束日期的单元格格式为「日期」类型,不要使用文本格式,否则会导致函数报错
- 完全复用了你提供的计算规则,计算结果和原有逻辑一致
内容的提问来源于stack exchange,提问作者Sebbie
相关产品推荐
相关产品推荐

