Google表单提交生成PM日历事件时时间默认AM的问题求助
解决Google Apps Script创建日历事件时时间AM/PM错误问题
我是一名教育工作者,刚接触脚本编写,写了一段Google Apps Script实现Google表单提交时自动创建日历事件(用于学校团队提前离校申请)。当前代码能保证日期和小时数值正确,但所有事件时间默认被设为凌晨(比如2点、3点),而实际大部分应为下午时段。之前尝试用if语句判断小时<4时加12来修复,结果日期出错且时间仍不正确,求修正方案。
修改后的完整代码
function createCalEvent(e) { Logger.log(e); var cal = CalendarApp.getCalendarById("c_2d83fb444341942e6e44b791b97bd5db57611ab24aebfc16ed17a8b4a5ca0ad2@group.calendar.google.com"); var name = e.namedValues["Coach/Advisor Name"][0]; var team = e.namedValues["Team/Club/Organization"][0]; var descr = e.namedValues["Name of Event"][0]; var location = e.namedValues["Location to be released to"][0]; // 解析日期和时间 var dateParts = e.namedValues["Date of Event"][0].split('/'); var timeParts = e.namedValues["Time for Release"][0].split(':'); var hrs = parseInt(timeParts[0], 10); var mnts = parseInt(timeParts[1], 10); // 转换下午时间:提前离校场景下1-4点应为下午,转为24小时制 if (hrs >= 1 && hrs < 4) { hrs += 12; } // 创建开始时间对象 var startTime = new Date(dateParts[2], dateParts[0]-1, dateParts[1]); startTime.setHours(hrs, mnts, 0, 0); // 设置结束时间(15分钟后) var endTime = new Date(startTime.getTime() + 900000); Logger.log('start='+startTime+' end='+endTime); // 创建日历事件并添加提醒 cal.createEvent('Early Release for '+team, startTime, endTime, { 'description': descr+' submitted by '+name+' (please release to '+location+')' }); cal.addEmailReminder(15); cal.addPopupReminder(15); }
关键修正点
- 时间类型转换:将拆分后的小时、分钟字符串转为整数(
parseInt),避免字符串运算导致的逻辑错误 - AM转PM逻辑:根据提前离校的场景,判断1-4点的时间应为下午,直接给小时数加12转为24小时制,不会触发日期变更(因为1+12=13,未超过24)
- 代码可读性优化:变量名更清晰(如
dateParts代替date),补充关键逻辑注释
内容的提问来源于stack exchange,提问作者Jere Kubuske
相关产品推荐
相关产品推荐

