Google Calendar 移除多日活动开始日期的脚本实现求助
解决方案
你可以通过扩展原函数的参数,新增控制是否排除开始日期的逻辑,以下是修改后的代码:
let excludeEnddate = e.isAllDayEvent(); // 全天活动时排除结束日期 let excludeStartdate = 你的判断条件; // 替换成你需要排除开始日期的触发逻辑,比如关联全天活动或其他业务规则 function getDaysArray(start, end, excludeStartdate, excludeEnddate) { let arr = []; // 初始化循环起始日期:若需排除开始日期,直接从开始日期的次日起算 let dt = new Date(start); if (excludeStartdate) { dt.setDate(dt.getDate() + 1); } // 循环终止逻辑:同时兼顾是否排除结束日期的规则 const endDate = new Date(end); while (dt <= endDate && !(excludeEnddate && dt.getTime() === endDate.getTime())) { arr.push(formatDate(dt)); dt.setDate(dt.getDate() + 1); } return arr; }
关键修改说明:
- 新增
excludeStartdate参数,用来控制是否跳过活动的开始日期 - 初始化循环日期时,若
excludeStartdate为true,直接将起始日期向后推一天 - 保留原有的
excludeEnddate逻辑,通过时间戳判断确保需要排除结束日期时,不会将其加入结果数组
你只需要把代码中的你的判断条件替换成实际业务里触发排除开始日期的规则即可,比如和结束日期一样绑定全天活动属性,或是其他自定义判断逻辑。
内容的提问来源于stack exchange,提问作者B. Walker
相关产品推荐
相关产品推荐

