Google表单设备预订同步谷歌日历Code.gs第18行缺)报错求助
错误原因
你遇到的语法错误是因为Google Apps Script基于JavaScript开发,不支持函数调用时直接写参数名: 参数值的传参格式,你第18行调用createEvent的写法不符合JavaScript语法规则,所以才会提示缺少)的报错。
需修正的问题点
CalendarApp.createEvent仅支持按位置传参,不需要加参数名前缀- 你单独提取的
startTime、endTime变量没有被使用,原代码直接运行会创建全时段的错误事件,需要把日期和时间合并为完整的日期时间对象 - 第四个参数要求为对象格式,不能直接传
yearGroup字符串,如果要把年级组信息写入事件,需要构造对应格式的配置对象
修正后的完整代码
function bookDevices() { var spreadsheet = SpreadsheetApp.getActiveSheet(); var calendarId = spreadsheet.getRange("C1").getValue(); var eventCal = CalendarApp.getCalendarById(calendarId); var signups = spreadsheet.getRange("B5:F100").getValues(); for (x=0; x<signups.length; x++) { var shift = signups[x]; // 跳过空行避免运行报错 if(!shift[0]) continue; var whatDevice = shift[0]; var whatDate = shift[1]; var yearGroup = shift[2]; var startTime = shift[3]; var endTime = shift[4]; // 合并日期和时间为完整的时间对象 var startDateTime = new Date(whatDate.getFullYear(), whatDate.getMonth(), whatDate.getDate(), startTime.getHours(), startTime.getMinutes()); var endDateTime = new Date(whatDate.getFullYear(), whatDate.getMonth(), whatDate.getDate(), endTime.getHours(), endTime.getMinutes()); // 按位置传参,options构造为标准对象 eventCal.createEvent(whatDevice, startDateTime, endDateTime, {description: "年级组:" + yearGroup}); } }
内容的提问来源于stack exchange,提问作者RSteHelp
相关产品推荐
相关产品推荐

